char (*p)[5]与char *p[5]的区别是什么?

求救啊~~~
2025-04-07 14:33:11
推荐回答(1个)
回答1:

1、Char(*P)[5]定义指向整个数组的指针。如果P的值是0x00,那么P++的值是0x05。我们就可以把[5]看作一个源类型(一个有五个char元素、长度为5的类型),P是指向此类型的指针。

2、Char*P[5]是第一种方法,由于[]运算符的高优先级,P和[5]的组合被定义为数组。Char*表示Zhidao数组的元素是指向Char类型数据的指针。

扩展资料:

例如,#includeint main(){int i;int  b[5]={1,3,5,7,9};int  (*a)[5] = &b;int  *m = a;        //a范围内的空间按照 int大小来取值 for(i = 0;i<5;i++){printf("%d\n",m[i]);}return 0。

输出是12345,其中int(*a)[5]表示在堆栈中生成5个int的空间,a表示整个空间的第一个地址,Int*m=a。

定义Zhidao的是它的值偏移量,也就是说,整数指针的第一个地址*m是,空间大小为5 int的空间由(*A)[5]生成。空间的第一个地址与数组的第一个地址相同,但空间无权定义其值方法。

Short*m=a表示空间大小为Short的类型。此类型与int(*a)[5]没有关系。int(*a)[5]的值负责生成空间,并且没有类型,这与malloc函数类似。