int *p[3]和int (*p)[3] 的区别,举例说明

Posted 唐大麦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了int *p[3]和int (*p)[3] 的区别,举例说明相关的知识,希望对你有一定的参考价值。

int *p[3] p是一个数组,此数组有3个元素,每个元素都是int*类型,也就是指向整型数据的指针类型。

int a=10,b=20,c=30;
int*p[3]=&a,&b,&c;

而int(*p)[3]中的p是一个指向数组的指针,此数组有3个int类型的元素。例如:

int a[3]=1,2,3; 那么p就是指向这个数组a的指针。
int(*p)[3]=&a; // 这里赋值一定要用取地址符号。也就是取数组a的地址。

不可以这样赋值: int(*p)[3]=a; // error :类型不兼容。a本来是数组类型,是不可以赋值给int(*)[3]这个类型的。

但是这样是可以的int *p1=a; // ok 因为a可以隐式转换为int*类型,其值实际上就是数组第一个元素的地址,也就是&a[0]

以上是关于int *p[3]和int (*p)[3] 的区别,举例说明的主要内容,如果未能解决你的问题,请参考以下文章

指针数组和数组指针的区别

int * const * p和int ** const p之间有什么区别

int p = *(int *)i 和 int p = *(int *)&i 之间的区别

数组指针和指针数组的区别

指针数组和数组指针的区别

数组指针和指针数组的区别