关于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]

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 18:32:26

关于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语言二维数组指针的疑问
定义一个二维数组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]=a+0=&a[0][0]=a[0]=*(a+0)=*a.可是这样推的话就有&a[0]=a[0],这是怎么回事?另外,a+1即为a[1]的地址,a[1]的地址又等于a[1],而a[1]+1即为a[1][1]的地址.那么a+1+1是a[2]的地址还是a[1][1]的地址?

关于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]
同学貌似没有理解指针和数组,指针就是指针 数组就是数组 只不过他们有些运算是相同的而已;
你的问题要从一级指针开始讲起:
比如 int a【3】,这是一个数组,里面存放的是3个整形的变量,也就是说,计算机在栈区中划分出了一块连续的内控空间,这个空间的大小(长度)是3个sizeof(int)的大小,就是12个字节,并且把这段空间取名字叫做 a,现在&a就是这块内存空间的首地址的了,就是数组的首地址.而a[0]是这个数组的第一个元素,&a[0]就是这个数组第一个元素的地址,那么肯定也就是这个数组的首地址了.因此这样看来&a和&a[0]是一样的.
但是你要注意的是:&a+1是这个数组的首地址+1,那么就是移动了3*sizeof(int)的长度,就是12个字节,&a[0]是首元素的地址+1,只移动了1*sizeof(int)的大小,就是4个字节,这是不同的.
好了,现在你看看二维数组,你自己说二维数组相当与是存放一位数组的数组.那么,可以这样理解,比如int a[3][3],可以看成int (*a)[3] 也就是一个指针数组.(因为你可以把以为数组看成指针,里面存放的是整数;那么二维数组也相当于一个指针,里面存放的是数组罢了);跟以为数组的分析类似:这个二维数组看成数组指针的话,它指向的是 int 【3】,那么&a+1就是移动3*3*sizeof(int)的长度,a+1就是移动3*ssizeof(int)的长度,a[0]+1就是a[1][0],a[1]+1就是a[2][0], 但是a[0][0]+1只是移动sizeof(int)*1的长度,就是说a[0][0]+1就是a[0][1];
就这样了 楼主自己好好看看 要靠自己

关于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[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4]; 用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4] C语言 定义一个二维数组来存放一个矩阵,然后将矩阵转置输出 关于 c 指针 二维数组的输出问题,*(p+k * j+l)中间的*是什么意思. C语言中指针引用二维数组元素问题假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就 二维数组怎么定义 C语言中数组长度不能用变量定义吗?我现在必须定义一个可变的二维数组u[m][n]前面会算出m、n的值,然后定义这个数组不能用变量定义的话, c语言编程,二维数组求助/*输入一个M*N的整数矩阵(3 若有定义int(*p)[3]; 则定义了一个名为p的指针变量 它可以指向每行有三个整数元素的二维数组请问如何理解这句话和此定义 为什么是二维数组? 帮忙写一个c语言程序,功能:求出二维数组周边元素之和,作为函数值返回.二维数组的值在主函数中赋予. C语言关于指针和二维数组的问题.准备将a[m][n]赋给指针时.定义指针时*p *p[N] (*p)[N]这有什么区别?p+1.对于这3种情况意义是一样的吗? C语言的指针问题.*(p+i)是代表取值呢还是取地址?有一二维数组a[3][4]={{56,45,89,90},{13,34,56,45},{65,55,34,68}}如果我定义指针*P,指向首地址,*(p+i)就能取到数组中的值.但如果我定义指针(*p)[4],指 关于二维数组的行数和列数有一个二维数组sz[,] 怎样获取sz 的行数和列数呢? 定义一个整数的二维数组,并将各数组元素都赋初值1 C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针 C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针 寻找矩阵的鞍点 C语言求大神帮忙找下错误二维数组中的鞍点,即该位置上的元素是所在行上的最大值,是所在列上的最小值.二维数组也可能没有鞍点.输入一个二维数组的行数n,列数m,二维数组