码迷,mamicode.com
首页 > 编程语言 > 详细

再谈指针数组与数组指针

时间:2015-04-07 23:33:52      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:c语言

经常遇到这两个概念,很容易混淆,这里细细总结一下。

指针数组:是一个数组,数组的元素是指针。数组占多少个字节由数组本身决定。

数组指针是一个指针,它指向一个数组。在32位系统下永远是占4 个字节。

举例说明:

1)int *p1[n];
2)int (*p2)[n];

1)“[]”的优先级比“*”要高。p1 先与“[]”结合,构成一个数组的定义,数组名为p1,int *修饰的是数组的内容,即数组的每个元素。即p1是指针数组,其包含n个指向int 类型数据的指针。

2)“()”的优先级比“[]”高,“*”号和p2 构成一个指针的定义,指针变量名为p2,int 修饰的是数组的内容,即数组的每个元素。数组在这里并没有名字,是个匿名数组。即p2是数组指针,它指向一个包含n 个int 类型数据的数组。

 技术分享

如要将二维数组赋给一指针,应这样赋值:
int a[3][4];
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
 p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
 p++;       //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]

所以数组指针也称指向一维数组的指针,亦称行指针。


再谈指针数组与数组指针

标签:c语言

原文地址:http://blog.csdn.net/lsh_2013/article/details/44926631

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!