让你迷惑的各种指针,这里一一介绍,助你掌握指针(二)

让你迷惑的各种指针,这里一一介绍,助你掌握指针(二)

今天就不多废话了,直接进入正题,下面我们来了解一下真是让人摸不着头脑的,指针数组和数组指针。

指针数组和数组指针,定义方法像类似,但是他们中有着巨大的差别。

指针数组

定义方法:类型 *数组名[];例如: int *a[5]; int *[5]a;

指针数组并不是指针,而是数组。

十分好理解,如同整型数组int a[5],指针数组int *a[5],只不过数组的成员从,整数形变成了指针。

上面所定义也就是5个指针变量组成的集合,数组。

数组指针

定义方法: 类型 (*指针名)[];例如: int (*p)[5] int (*)[5]p

上面的数组指针定义方法需要注意:由于[]的优先级比*高,所以要把*括起来,不然就会定义成指针数组。

数组指针也叫行指针。

假如用普通的指针变量,来存放数组的首地址。在加一后,会指向数组的下一个数据。而数组指针加一会,往后移动下表数量的数据,比如int (*p)[5];p+1;会往后移动 5个int所占的字节。所以行指针指向的是一个一维数组,而不是单纯的一个整形变量。它的加一,会让它的指向往后移动 5×sizeof(int)个字节。

下面我会给出一段代码,大家可以打开调试功能,查看数据的变化,方便大家掌握,理解。

#includeint main(void){ int a[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } }; int(*p)[3]; p = a; p++; printf("%d", **p);}

到这里文章就结束了,如果还是不太理解,关注后私信发生“C语言”入群找我解答,另外如果有想学习c语言或者c++的同学们,也可以加群,、方便你们参考、学习和讨论问题。 群内有大量学习资料。

让你迷惑的各种指针,这里一一介绍,助你掌握指针(二)

大家如果觉得我的文章还可以,可以关注,转发,收藏,评论。


分享到:


相關文章: