C语言中二维数组为什么要进行两层解引用才能求出值

#include <stdio.h>int main(void){ int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11}; int (*p)[4] = a; int i, j; printf("%#X\n",*(a+1)+2); printf("%#X\n", *(*(a+1)+2)); return 0;}求大神解答!!!!!

二维数组的数组名可以看做是指向指针的指针,所以取得二维数组的某个值,需要两次解引用。
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言指针问题求大神解答
即 int a[4][5] 中的int a[2][0] 这个位置的地址 再进行退化成 一个一维数组的别名 即 也可看成一个 指向int类型的 地址 C 他是在指向int 类型的地址再向后挪3位 即 是到a[3][3]这个位置 的地址 返回 他还是一个指针 D 返回的是对应二维数组中a[2][0]的这个元素的值 总...

C语言中,a为一个二维数组,为什么(&a[0])[2] 与(&a[2])[0]输出的结果一...
在C语言中,二维数组a在内存中的存储方式是按行优先(row-major)的方式存储的,也就是说a[0]存放在内存的第一块地址上,紧接着a[1]、a[2]……以此类推。(&a[0])[2] 表示的是a[0]指向的地址再往后偏移2个a[0]大小的位置,即移动了两个一维数组的位置,所以等价于指向a[2]这个一维数...

计算机二级C语言考试技巧
对一维数组进行操作的时候,不可避免的要访问相关的数组元素,在C语言中访问数组元素一般采取单层循环的方法进行遍历,假设数组长度为n,数组下标是在0到(n-1)之间的,考生应该牢固掌握在一维数组中求最大值、最小值,移动元素,查找特定值,存储数组元素的方法。(2)对字符串的操作该类问题是每次考试的重点和难点,特别是...

c语言中二维数组(*a)[1]和*a[1]有什么区别,为啥他们的值不一样?_百度...
二维数组名是一个指向一个一维数组的指针,a是一个二维数组名,就是一个指向一维数组的指针,一个这样的指针求间接运输(*a),得带的是这个指针所指向的一维数组的数组名,在此是 a[0], 数组名加一个下标就是数组元素值,(*a)[1]就是 第0行数组的第1个元素 a[0][1]-->2 a[1]->通...

C语言二维数组问题
要用一个指针来引用数组,那么该指针的类型就要定义成数组的第一层元素的地址类型 比如 int a[3]={1,2,3}; a的元素是int,元素地址类型是int* ,那么就可以定义一个int型指针来引用a:int*p=a;而 int[3][4]; a的元素是 int[4], 就是由4个int组成的数组 ,地址类型是int(*)[4],...

C语言、二维数组指针中的 * 和 &
[0]的值是一样的,还有一个是*(a+i),这个就需要转转脑筋了,二维数组用指针怎么表示?用二维指针即:**a,那么a[3][4]这个数据(注意是一个数值)用指针怎么表示呢?*(*(a+3)+4),必须有两个“*”才行,要不就是一维数组了,里面是*(a+3)这代表的是第三行没错吧,第三行的...

求c语言指针方式引用二维数组问题
a[0]代表第一组首元素地址,当然,a[0]也指向数组首元素的地址,a[0]=&a[0][0];a是对a取值,它取出的是a[0],当然=&a[0][0];&a[0]指a[0]的地址,还是它自己,所以&a[0]=&a[0][0]。所以,第一行个打印语句输出的5个内容都是一样的,所以,输出5个19ff0c。是a[0][0...

C语言问题,对C数组元素正确引用的是?
解:int c[4][5],(*cp)[5];cp=c;这里cp是二维数组c的首地址 cp本身也是二维数组 正确的是:C (*cp+2) *cp是cp[0][0]的地址 *cp+2就是cp[2][0]的地址 (*cp+2) 就是cp[2][0]的值 其余的引用都是引用的地址 要想引用二维数组的元素值 必须使用两个 希望能帮助你哈 ...

关于C语言中数组元素的引用问题
A:int pp;表示pp所指的是一个二维数组,所以它的引用可以这样用pp[][]的形式;D:因为p[i]=&a[i*4];有p[0]=&a[0],所以*(p+2),即p[2],指的是a[8];(*(p+2)+2)指的就是a[10];p[0]-> a[0]a[1]a[2]a[3]p[1]-> a[4]a[5]a[6]a[7]p[2]-> a[8]a[9]a...

二维数组和一维指针数组的区别
下面简单了解下二维数组的组成(引用的是《c语言入门经典》的图):从图中可以看出,board作为二维数组是由两层构成的,第一层为纵向数组,第二层为横向数组。 也就是说board是纵向数组的首地址,也就是纵向数组的第一个元素board[0]的地址。这就解释了board的值为什么等于&board[0]的值。而(board+...

相似回答