*(*(a+i)+j) 。
a是二维数组名,也是二维数组0行的首地址。a[0]是第一个一维数组的数组名和首地址*(a+0)或*a是与a[0]等效的,它表示一维数组a[0]0号元素的首地址。&a[0][0]是二维数组a的0行0列元素首地址。
同理,a+1是二维数组1行的首地址,由此可得出:a+i,a[i],*(a+i),&a[i][0]是等同的。此外,&a[i]和a[i]也是等同的。
另外,a[0]也可以看成是a[0]+0是一维数组a[0]的0号元素的首地址,而a[0]+1则是a[0]的1号元素首地址,由此可得出a[i]+j则是一维数组a[i]的j号元素首地址,它等于&a[i][j]。
由a[i]=*(a+i)得a[i]+j=*(a+i)+j,由于*(a+i)+j是二维数组a的i行j列元素的首地址。因此,该元素的值等于*(*(a+i)+j)。
扩展资料:
两个地方要注意:
1、在程序声明变量的时候的*,只是表明“它是一个无符号整数,这个整数指向某个内存地址,一次访问sizeof(type)长度”。这点不要和(*)操作符混淆;
在C++程序声明变量的时候的&,只是表明“它是一个引用,这个引用声明时不开辟新空间,它在内存分配表加入新的一行,该行内存地址等于和调用时传入的对应参数内存地址”。
这点不要和(*)声明符,(&)操作符混淆。
参考资料:
若有定义:int a[2][3];则对a数组的第i行第j列元素值得正确引用为
由a[i]=*(a+i)得a[i]+j=*(a+i)+j,由于*(a+i)+j是二维数组a的i行j列元素的首地址。因此,该元素的值等于*(*(a+i)+j)。
...int a[2][3];”,则对a数组的第i行第j列元素的正确引用为...
【答案】:A A。【解析】通过地址来引用数组元素的方法有下列5种:①a[i][j];②*(a[i]+J);③*(*(a+i)+j);④*(aEiJEj]);⑤(&a[o]EoJ+3*i十j)。故A正确。
若有定义: int a[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋 ...
答案为A项。元素值的正确引用为*(*(a+i)+j)。这个题目主要是考查二维数组元素的引用方法。选项A中a+i指向数组a的第i+1行,*(a+i)则是第i+1行第0列的地址值,*(a+i)+j指向了数组a第i+1行,j+1列,*(*(a+i)+j)取到的是数组a的a[i][j]元素。所以正确答案为A项。
若有定义:int a[2][3]; 则对a数组的第i行第j列元素值的正确引用为:
(a+i) 就是a[i]的意思+j 就是a[i][j] 外面再加个*好就是取a[i][j] 的值
c语言选择题 我做了就是想对答案
则对a数组元素的正确引用是___D___. int a[5],*p=a; a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)2.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为___A___. a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j3.若有以下定义,则p+...
若有定义“inta[2][3]=1,23+456}};”,试编程将数组a的行和列的元素互...
由于数组 b 的行数和列数与数组 a 的行数和列数相反,因此在行列互换后,数组 b 的第二行只有两个元素,第三个元素被初始化为 0。如果需要避免这种情况,需要定义一个与数组 a 行数和列数相反的数组,或者在定义数组 b 时指定初始化值。
若有定义“int a[2][3]]={{1,2,3},{4,5,6}};”,试编程将数组a的行和...
int main(int argc,char *argv[]){ int a[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j;for(i=0;i<2;i++)for(j=0;j<3;j++)b[j][i]=a[i][j];for(i=0;i<3;i++){\/\/打出来看看 for(j=0;j<2;printf("%d ",b[i][j++]));putchar('\\n');} return 0;}...
若有说明int a[3][4] 则对a数组元素的正确引用为
二维数组引用基本格式:数组名[行标][列标]。行标和列标都是从0开始,最大下标为行(列)标长度-1。比如:a[0][1],表示第一行第二列的数组元素。二维数组:由行和列组成的二维表格形式的元素,其实也就是矩阵。基本格式:数据类型 数组名[行长度][列长度];行长度为二维数组行的个数,必须为...
若有说明:int a[2][3]={{11,23,57},{42,16,37}},现将a的行与列的元素...
include <stdio.h>int main(){int i,j;int a[2][3]={{11,23,57},{42,16,37}} ;int b[3][2];for( i=0;i<2;i++)for(j=0;j<3;j++)b[j][i]=a[i][j];for( i=0;i<3;i++){for(j=0;j<2;j++)printf("%d ", b[i][j] );printf("\\n");}return 0;} ...
在C语言中,写出二维数组元素a[2][3]在内存中的存放顺序
在这个示例中,我们定义了一个 2 行 3 列的二维数组 `a`。对于每个元素,它的值都存储在内存中的一个特定地址上。可以看到,第一行的元素 `a[0][0]`、`a[0][1]` 和 `a[0][2]` 存储在连续的内存位置中,接着是第二行的元素 `a[1][0]`、`a[1][1]` 和 `a[1][2]`。对于...