99问答网
所有问题
C语言行指针
int a[3][4]; int (*p)[4];
初始化p=a;p指向a[0][0],p++之后就指向a[1][0]吗?
还是指向a[0][1]?
行指针是怎么移动的啊?
举报该问题
推荐答案 2010-03-16
错解了。p没有指向a[0][0],因为使用*p不能输出a[0][0]的值,*p才是指向a[0][0]的,因为**p就是a[0][0]的值,而且*p输出的是&a[0][0]的地址。p是指向的a[0]也就是说p=&a[0]=a+0;的,也就是指向的二维数组的第一行。
p++ = &a[1]=a+1; 也就是指向二维数组中的第二行。
总之,要记住的是a[1]才是指向的二维数组中第2行第1个元素的地址。
而&a[1]表示的就是二维数组中第二行的行地址。
同样,因为a=a+0,表示的是二维数组中第一行的行地址。因此a+1就是表示的是二维数组中第二行的行地址。
还要记住:[ ]这个运算符的的运算法则是,把左侧的地址加上[ ]内的偏移量然后再求指针运算,注意有[ ]运算符的地方就有个隐含的指针,比如x[2]表示的就是将指针x偏移2个单位量后再求指针运算。也就说x[2]与*(x+2)是相等的。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/WevvOzvjj.html
其他回答
第1个回答 2010-03-16
二维数组也是用一维来存储的,第一行先存接着是第二行,
p++时要考虑p的类型,因为int(*p)[4]是个指向数组的指针,所以p++相当于跳过了4个元素,指向下一行的第一个元素a[1][0];
你可以写个程序P++以后输出就能看出来了。
第2个回答 2010-03-16
p++指向a[1][0].因为p为行指针。
如果int *p=a,那么p++,指向a[0][1]
相似回答
请问
c语言
中行指针和指针数组有什么区别吗?
行指针
有什么用吗?_百度知 ...
答:
行指针
是一种形象的说法,比如现在有x行x列的表格。p指针指向第一行,行指针特点就是比如p+1,那么p就指向下一行的首地址。普通指针+1 就指向下一个,注意是下一个地址。行指针是指向下一行。数组指针就是一个数组的地址,行指针出现在二维数组里就是是二级指针那里附近,例如 int a[10][5];...
C语言
中如何定义一个
行指针
答:
int (*arryp)[10]; //数组
指针
,因为数组指针指向数组,而数组也可看做是个指针,那数组指针可以理解为一个二 级指针 int a[10];arryp = &a; //将数组地址个数组指针 arry[0] = *arryp; //arry[0]是一级指针,要将数组指针赋给指针数组,就要取内容,实际就是 arry[0] = ...
C语言
中二维数组
行指针
是什么
答:
对于二维数组array[4][3],与int* p 。二维数组名array 不能直接赋值给p。原因前面已讲过,两只的对象性质不同。 在
C语言
中,可以通过定义一个行数组
指针
,使得这个指针与二维数组名具有同样的性质,实现它们之间可以直接赋值。行数组指针定义如下:int (*p)[3]; 它表示,数组 *p 具有三个int类型...
c语言
中,指针数组和
行指针
的区别是什么?
答:
int(*p)[4],这个就是
行指针
这种类型的指针p是指向一个一维数组,这个一维数组包含4个整形元素 但是 int a[4];p=a; 这种方式却是不对的 因为p只能指向一个整型的一维数组,不能指向一个整型数据,a所指向的正是a[0],是个整型数;实际上int(*p)[4]这种类型的指针是用于多维数组中的,...
c语言
中,
行指针
指向哪里,为什么(*p)[]方框里是二维数组的列不是行...
答:
(*p)[X]只是说p是指向一个具有X列的一维数组的指针,指针的类型(就是这个一维数组的元素的类型)有待你声明,X的大小也要你写明确,否则p就不可用;p确实是
行指针
,是指向一行一维数组的,但一个一维数组的长度不是用列数来表示的吗?至于p指向了哪一行,那要由代码给它赋值了才能知道。比如有int...
c语言
中怎样给
指针
中添加多个数组的元素
答:
数组指针(也称
行指针
)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4];//该语句是定义一个...
C语言
:
行指针
int (*p)[m]这个m具体指什么呢??
答:
int *p[m];是
指针
数组:p是一个长度为m的数组,数组成员是int *型的指针;int (*p)[m];是数组指针:p是个指针,指向一个长度为m的int型数组。实际上二维数组int p[n][m]实际上可以看作长度为n的数组,每个数组元素是长度为m的int型数组.因此指向二维数组元素的指针需要int (*p)[m]....
c语言
中的列指针是指向元素的指针吗,怎么区别
行指针
与列指针
答:
a+2是
行指针
,它指向的元素是一个包含4个元素的一维数组,而*a、*(a+1)、*(a+2)是列指针,即指向元素的指针,相当于一维数组中指向特定元素的指针。*(*(a+1)+2)是先竖着走一行,再横着走两行,相当于a[1][2]。&a[1][0]就是a[1][0]的地址,相当于*(a+1),是一个列指针。
分别用
行指针
和指向元素的指针求整形二维数组中的最大元素及其所在的行...
答:
printf("\n
行指针
结果:\n");printf("max:%d 下标:%d,%d %d行%d列\n", max, result[0], result[1], result[0] + 1, result[1] + 1);result = colPoint(arr[0], &max);printf("列指针结果:\n");printf("max:%d 下标:%d,%d %d行%d列\n", max, result[0], result...
大家正在搜
c语言行指针和列指针
c语言行和列
行指针和列指针的用法
行指针的应用
二维数组的行指针和列指针
c语音指针列转行
行指针和列指针的理解
行指针转换为列指针
行指针是什么
相关问题
C语言中二维数组行指针是什么
C语言中如何定义一个行指针
C语言的行指针与元素指针有什么区别?
c语言中,指针数组和行指针的区别是什么?
C语言中的“行指针”与“元素指针”有什么区别?
C语言行指针和列指针
c语言中的列指针是指向元素的指针吗,怎么区别行指针与列指针
c语言中,行指针指向哪里,为什么(*p)[]方框里是二维数组...