c语言中,指针数组和行指针的区别是什么?

老师说:指针数组是每个元素都是一个指针,分别x维数组每一行的首地址。
行指针是指向数组的指针。
我怎么感觉都差不多呢?

int(*p)[4],这个就是行指针
这种类型的指针p是指向一个一维数组,这个一维数组包含4个整形元素
但是 int a[4];p=a; 这种方式却是不对的
因为p只能指向一个整型的一维数组,不能指向一个整型数据,a所指向的正是a[0],是个整型数;
实际上int(*p)[4]这种类型的指针是用于多维数组中的,比如定义一个二维数组int b[3][4],就可以这样赋值p=&b[0],使p指向一维数组b[0],而且p的增减是以一维数组的长度为单位的,比如p+1指向的就是b[1]了

int *p[4]这个是指针数组了,首先弄明白这个是数组,里面存放的是指针也就是地址,这个地址所指向的是一个整型数据,你可以把p[0],p[1]....当作一个个的指针变量来使用

我学的时候也弄了半天才搞明白,这是我总结的,你多看看指针那关于多维数组与指针的一节,做些练习自己验证几次就容易弄明白了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-18
简单的说就是一个是指向数组的指针,一个是数组成员是一族指针
具体哪个是哪个我也时常分不清楚。但用起来就知道了
相似回答