C语言中二维数组的指针问题假设有 int a[3][3],*p; 要正确赋首地址值只可以p=a[0] p=&a[0][0]而不能 p=a?书上所说的“p=a容易造成概念上的混淆”在哪里?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 08:38:27
C语言中二维数组的指针问题假设有 int a[3][3],*p; 要正确赋首地址值只可以p=a[0] p=&a[0][0]而不能 p=a?书上所说的“p=a容易造成概念上的混淆”在哪里?

C语言中二维数组的指针问题假设有 int a[3][3],*p; 要正确赋首地址值只可以p=a[0] p=&a[0][0]而不能 p=a?书上所说的“p=a容易造成概念上的混淆”在哪里?
C语言中二维数组的指针问题
假设有 int a[3][3],*p; 要正确赋首地址值只可以p=a[0] p=&a[0][0]而不能 p=a?
书上所说的“p=a容易造成概念上的混淆”在哪里?

C语言中二维数组的指针问题假设有 int a[3][3],*p; 要正确赋首地址值只可以p=a[0] p=&a[0][0]而不能 p=a?书上所说的“p=a容易造成概念上的混淆”在哪里?
a[0] 等价于 *(a+0)它指的是0行0列的元素地址
&a[0][0] 也是指0行0列的元素地址
p=&a[0][0] 它的意思的使指针p指向数组a的第0行第0列,而在后面执行p++的时候,就会使指针顺序后移,依次指向 a[0][1] a[0][2]……a[2][2] 的地址;
假如:p=a 这是使指针p指向数组a的首行,当你输出*p这个值的时候,它输出的值是a[0][0]这个元素的值,但是当你执行p+1的时候,那么p就会指向数组a的序号为1的行,即指向了a[1][0]这个元素所在的行了.p始终指向数组a的行,而不指向列.
虽然p=a[0] p=&a[0][0] p=a 这三个语句都是例p指向数组a的a[0][0]这个元素,但它们的意义是不一样的.另外p=a这个语句是合法的,不是不能用,而是在你想要使p指向数组a的首元素地址时,不建议你使用p=a这个语句,容易混淆.
初学者会搞不清这个指针是指向行还是指向列.

C语言中二维数组的指针问题假设有 int a[3][3],*p; 要正确赋首地址值只可以p=a[0] p=&a[0][0]而不能 p=a?书上所说的“p=a容易造成概念上的混淆”在哪里? C语言中指针引用二维数组元素问题假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就 c语言中,指针于二维数组的问题假设我们引用二维数组a中的元素a[I][J],指针P指向a.书上说引用方法有四种 p[i]+[j] *(*(p+i)+j) (*(p+i))[j]) *(p[i]+j)为什么要弄得这么复杂啊,而且看不懂为什么可以这 C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针 C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针 请教C语言一道指向二维数组指针的题,有3个同学,各学4门课程,输出第n个同学的成绩.错误的程序是这样的:#includevoid main(){void search (float *p,int n);/*这里的 float *p 好像有问题*/float score[3][4]={65,6 关于C语言二维数组指针的疑问定义一个二维数组int a[i][j],由定义可知a=&a[0][0]=a[0],由于a可看成是带有i个一维数组元素的数组,所以由一维数组的情形可推知a[i]=*(a+i)和a+i=&a{i]和a=&a[0],即有a=&a[0] C语言计算数组中任一元素a[i][j]在数组中位置的公式若二维数组a有m列,假设a[0][0]位于数组的第一个位置上,则计算数组中任一元素a[i][j]在数组中位置的公式为A i * m + jB j * m + iC i * m + j-1D i * m + 关于 c 指针 二维数组的输出问题,*(p+k * j+l)中间的*是什么意思. C中 用指针表示一个二维数组中任意的元素 书上写是a【i】【j】=(*p+m*i+j) m是数组的第二维的维数 若有以下的定义和语句,则下面各个符号的正确含义是:int a[3][4] ,(*p)[4];p=a;p+1p+1是第几行 C语言的指针问题.*(p+i)是代表取值呢还是取地址?有一二维数组a[3][4]={{56,45,89,90},{13,34,56,45},{65,55,34,68}}如果我定义指针*P,指向首地址,*(p+i)就能取到数组中的值.但如果我定义指针(*p)[4],指 c语言中,如果是二维或多维数组用指针加减运算,那算哪个?如 int a[5][5],*pa; pa=a;pa+2;那结果是指向a[ C语言的一个概念性问题,我很难理解.Thank you 通过地址来引用二维数组元素.若有以下定义:int a[3][4],i,j;且当0 若有说明:int a[][4]={0,0};,则以下选项中,不正确的是(D)麻烦大神给个详解.谢谢了,选项在问题补充中A)数组a的每个元素都可得到初值.B)二维数组a的第一维大小为1C)因为二维数组a中初值的 用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4]; 用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4] C语言关于指针和二维数组的问题.准备将a[m][n]赋给指针时.定义指针时*p *p[N] (*p)[N]这有什么区别?p+1.对于这3种情况意义是一样的吗? 若有定义int(*p)[3]; 则定义了一个名为p的指针变量 它可以指向每行有三个整数元素的二维数组请问如何理解这句话和此定义 为什么是二维数组?