C++从入门到精通|C++( 指针微探(指针与数组))

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++( 指针微探(指针与数组))】

    推荐阅读