数组指针与指针数组的区别

文章目录


前言

经常有人会搞混 int *ap[10] 和 int (*pa)[10] 到底哪一个是指针数组,哪一个是数组指针,下面我们来捋一捋,怎样区分数组指针和指针数组,以及它们的区别。

一、数组指针

数组指针,即指向数组的指针

int a[1][10],b[3][9],c[9];
int *p;//指向一维数组的指针变量,也可指向整型变量
int (*pa)[10];//指向二维数组的指针变量
//p=a;pa=b;pa=c;都会报错
p=c;
pa=a;

上面两个语句都可以是在定义数组指针,其中p只能指向一维数组(或整型变量),pa只能指向二维数组,且列数都是10。其中pa++表示指到该二维数组的下一行的首地址。

二、指针数组

指针数组,即由指针组成的数组

int a,b,c,d;
int *ap[10];
ap[0]=&a;
ap[1]=&b;
ap[2]=&c;
ap[3]=&d;

优先级:()>[]>*,[ ]与ap结合的优先级比 * 高,所以ap[10]是一个数组,相当于有10个指针变量


总结

//数组指针
int *p;//指向一维数组的指针变量,也可指向整型变量
int (*pa)[10];//指向二维数组的指针变量
//指针数组
int *ap[10];
上一篇:并查集(知识点+例题详解)c++


下一篇:C语言----指针与一维数组(高阶篇二十七)