社区
汇编语言
帖子详情
*(*(a+i)+j)与*(a[i]+j)
h2995527
2011-05-11 08:45:56
a[i][j]是一个二维数组
*(*(a+i)+j)与*(a[i]+j)书上说这两个都可以表示a[i][j] 的值
我不理解的是为什么*(a+i)和a[i]是等价的
a[i]是个地址
a+i也是个地址
那*(a+i)不就是地址里面的值了么?
请大牛们讲解一下哈
...全文
1327
5
打赏
收藏
*(*(a+i)+j)与*(a[i]+j)
a[i][j]是一个二维数组 *(*(a+i)+j)与*(a[i]+j)书上说这两个都可以表示a[i][j] 的值 我不理解的是为什么*(a+i)和a[i]是等价的 a[i]是个地址 a+i也是个地址 那*(a+i)不就是地址里面的值了么? 请大牛们讲解一下哈
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
D1000
2011-05-26
打赏
举报
回复
1
C语言中,A[j]表示一维数组,那么变量A则为此数组的首地址,通过A[j]或*(A+j)可以访问每个元素。
同理,用a[i]代替A,则通过a[i][j]或*(a[i]+j)可以访问每个元素,由于a[i]也表示一维数组(数组的数组),所以a[i]也可以用*(a+i)来表示,所以*(a[i]+j)与*(*(a+i)+j)等价。
对上面大侠的说法,很受用。“用a[i]代替A''就是说a[i]也是数组名喽,这样解释就通了。嘎嘎。。。
jamesplj
2011-05-12
打赏
举报
回复
C语言中,A[j]表示一维数组,那么变量A则为此数组的首地址,通过A[j]或*(A+j)可以访问每个元素。
同理,用a[i]代替A,则通过a[i][j]或*(a[i]+j)可以访问每个元素,由于a[i]也表示一维数组(数组的数组),所以a[i]也可以用*(a+i)来表示,所以*(a[i]+j)与*(*(a+i)+j)等价。
guchangzheng1990
2011-05-12
打赏
举报
回复
a[i]地址对应的是a[i]的第一个元素的地址。
因为a是一个二维数组的首元素的地址 及 *(a+i) 也为地址。、
大熊猫侯佩
2011-05-12
打赏
举报
回复
[Quote=引用 1 楼 mydo 的回复:]
a[i]不是地址!概念上先错了。
[/Quote]
你是2维函数,那我看错了。 :)
大熊猫侯佩
2011-05-11
打赏
举报
回复
a[i]不是地址!概念上先错了。
*(*(a+i)+j)输出数组第i-1行第j-1列的元素
printArr(int *a,int line,int column) { int i,j; for(i = 0; i < line; i++) { for(j = 0; j < column; j++) { printf("%d\t",*(a+i)+j); //*(a+i)+j是第i-1行第j-1列的元素 } printf("\n"); } } 输出结果为: 请输入行数与列数:7 8 65 66 67 68 69
*(*(a+i)+j)的问题
假设 int a[][3]={1,2,3,4,5,6},b; b=((a+1)+1); a是个二维数组,表示二维数组a的地址,a[0]、a[1]可看作是2个一维数组,分别是一维数组a[0]、a[1]的地址,a[0]的值为{1,2,3},a[1]的值为{4,5,6},也就是a[0][0]的值为1,a[1][0]的值为4,依此类推 a+1是个地址,是二维数组a的第二个元素的地址,也就是a[1]的地址 ...
C/C++数组访问方式:*a,*a[0],*(*(a+i)+j)详解
总结一下,对于二维数组arr等价于&arr[0]*arr等价于arr[0]。arr[0]等价于&arr[0][0]*arr[0]等价于arr[0][0]。arr + i等价于&arr[i]*(arr + i)等价于arr[i]等价于&arr[i][j]等价于arr[i][j]。arr单独拿出来表示的是首元素的地址,而&arr是整个数组的地址。二维数组的首地址、首行地址和元素地址C语言学习之:一维数组、二维数组的取值和取地址问题关于二维数组a[i][j]
二维数组指针_地址和值的表达方式_区别 如 &a[0],*a[0], *(a+i),*(a+i)+j 等
#include<stdio.h> int main() { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; /* printf("%d,%d\n",a,*a); // 0行首地址 和 0行0列元素地址 (注释掉的这部分可不看,和下边是一样的) printf("%d,%d\n",a[0],*(a+0)); // 0行0列元素地址 printf("%d,%d\n",&a[0],&a[0][0]); // 0行首地址
python中for循环的用法a+aa+aaa-Python练习题 013:求解a+aa+aaa……
【Python练习题 013】 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘输入。这题倒也不难,实际上 a+aa+aaa+aa...a 可以转化为 (a * 10**0) + (a * 10**1) + (a * 10**2)…… 进而转化为 a * (10**0 + 10**1 + 10*...
汇编语言
21,493
社区成员
41,618
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章