1: 指针与数组 初始化指针数组,隐式指针转换
int main() {cout << "C++指针数组" << endl;
int val1[5];
for (int i = 0;
i < 5;
++i) {
val1[i] = i;
}//近似理解为 int *p = &val[0];
在定义指针的时候,int *p 它的右值应该是一个地址
int* p5 = val1;
///这里发生了隐式指针转换:数组自动转换为指向第一个元素的指针
printf("%d\n", *p5);
///指针p指向val的第一个元素,即val[0]int t = 5;
while (t--) {// 可以直接对指针进行加减运算,就和迭代器一样
printf("%d\n", *(p5++));
///输出0-5
}///指针可以做差:
int* p6 = &val1[10], * p7 = &val1[20];
printf("%d\n", p7 - p6);
//10
printf("%d\n", p6 - p7);
//-10///还可以比比较大小:
printf("%d\n", p6 < p7 ? p7 - p6 : p6 - p7);
//10}打印结果:
C++指针数组
0
0
1
2
3
4
10
-10
10结论
1:在定义指针的时候,int *p 它的右值应该是一个地址 所以指针初始化应该这样写
int *p = new int[5];
2: *p ---》指针p指向数组val 的第一个元素值 即:val[0]
【C++从入门到精通|C++( 指针微探(指针与数组))】
推荐阅读
- Unbox|C++ 调用 Mask R-CNN Detectron2
- C++中的reinterpret_cast用法介绍 |类型转换运算符
- 三维成像|相机标定与图像校正助手(VS+OpenCV+Qt实现)
- C++(11)(包含守卫#ifndef,预处理指令#pragma once,操作符_Pragma)
- C语言|C语言static关键字的作用(有三个作用)
- 网络|简单易用的嵌入式网络库(Mongoose)
- leetcode刷题-每日更新|Leetcode刷题--链表(C++)
- C++标准库|std::equal 用法
- c++|蓝桥杯真题(3)