指针数组和数组指针

Posted clwsec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针数组和数组指针相关的知识,希望对你有一定的参考价值。

指针数组和数组指针

  • 指针数组:数组的每一个元素都是指针,故所占内存的小和机子位数有关。
  • 数组指针:数组的指针,即指向一个数组的指针就是数组指针,对应的是二维数组。

具体就不细说了,主要是分得清,不要弄混了,直接看下面的例子

例子

#include<iostream>

using namespace std;

int main()
{
    //定义数组
    int arr1[3];
    int arr2[3][10];

    //数组指针
    int *p1 = arr1;
    int(*p2)[10] = arr2;

    //首地址
    cout << arr1 << " " << p1 << " " << &arr1[0] << " " << &p1[0] << endl;
    //第二行的首地址
    cout << arr1 + 1 << " " << p1 + 1 << " " << &arr1[1] << " " << &p1[1] << endl;

    //首地址
    cout << arr2 << " " << p2 << " " << p2[0] << " " << &p2[0][0] << endl;
    //第二行的首地址
    cout << arr2 + 1 << " " << p2 + 1 << " " << p2[1] << " " << &p2[1][0] << endl;
    //arr2[1][1]的地址
    cout << arr2[1] + 1 << " " << p2[1] + 1 << " " << &p2[1][1] << " " << &(*(*(p2 + 1) + 1)) << endl;

    //指针数组,下面三种写法效果一样
    int *(n1[10]); //指针大小32位机为4,64位机为8
    int *(n2)[10];
    int *n3[10];

    cout << sizeof(n1) << " " << n1 << " " << n1 + 1 << " " << &n1[2] << endl;
    cout << sizeof(n2) << " " << n2 << " " << n2 + 1 << " " << &n2[2] << endl;
    cout << sizeof(n3) << " " << n3 << " " << n3 + 1 << " " << &n3[2] << endl;

    system("pause");
    return 0;
}

运行结果:

技术图片

区别和相关用法如上,可对比查看。

更多

1.指针数组与数组指针详解
2.让你不再害怕指针——C指针详解(经典,非常详细)

以上是关于指针数组和数组指针的主要内容,如果未能解决你的问题,请参考以下文章

c语言中如何通过二级指针来操作二维数组

字符指针操作字符数组出错,代码如问题补充,

C语言进阶笔记深入了解进阶指针

C语言进阶笔记深入了解进阶指针

C语言进阶笔记深入了解进阶指针

C语言进阶笔记深入了解进阶指针