社区
C语言
帖子详情
二维数组*(a+1)和*a+1分别代表什么?
sulemon
2004-11-15 02:21:18
例如有一个二维数组a[5][5]
请问 a+1
*(a+1)
*a+1
分别不表示什么?
...全文
2388
12
打赏
收藏
二维数组*(a+1)和*a+1分别代表什么?
例如有一个二维数组a[5][5] 请问 a+1 *(a+1) *a+1 分别不表示什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
firespirit
2004-11-15
打赏
举报
回复
reflectwang(沉思)说的确实正解。
通过打印程序输出各项值可知:
a+1 == a[1][0]的地址
*(a+1) == a[1][0]的地址
*a+1 == a[0][1]的地址
打印程序:
#include "stdafx.h"
#include "stdio.h"
int main(void)
{
int a[5][5];
int i, j , num = 0;
for (i = 0 ; i < 5; i ++)
for (j = 0; j < 5; j ++)
{
num ++;
a[i][j] = num;
}
for (i = 0 ; i < 5; i ++)
{
for (j = 0; j < 5; j ++)
{
printf("a[%d][%d] = %d, ",i, j, a[i][j]);
}
printf("\n");
}
printf("a = %d\n", a);
printf("a+1 = %d\n", (a+1));
printf("*(a+1) = %d\n", *(a+1));
printf("*a+1 = %d\n", (*a+1));
return 0;
}
打印输出:
a[0][0] = 1, a[0][1] = 2, a[0][2] = 3, a[0][3] = 4, a[0][4] = 5,
a[1][0] = 6, a[1][1] = 7, a[1][2] = 8, a[1][3] = 9, a[1][4] = 10,
a[2][0] = 11, a[2][1] = 12, a[2][2] = 13, a[2][3] = 14, a[2][4] = 15,
a[3][0] = 16, a[3][1] = 17, a[3][2] = 18, a[3][3] = 19, a[3][4] = 20,
a[4][0] = 21, a[4][1] = 22, a[4][2] = 23, a[4][3] = 24, a[4][4] = 25,
a = 1244956
a+1 = 1244976
*(a+1) = 1244976
*a+1 = 1244960
alphakiller
2004-11-15
打赏
举报
回复
a+1 第一行首地址
*(a+1) 第一行第0列的地址
*a+1 第0行第一列的地址
随便找本c语言的书,上面会讲的很详细
sulemon
2004-11-15
打赏
举报
回复
个人觉得reflectwang(沉思) 说的是正解
hiller888
2004-11-15
打赏
举报
回复
a+1是a[0][1]的地址,*(a+1)则是a[0][1]的数值,*a+1是a[0][0]的数值加1
moany
2004-11-15
打赏
举报
回复
楼上的,你们都测试了吗,就这么说。
我记得书上 好像也都是这么说的,可是为什么这样赋值报错呢?
int x = *(a+1);
somedummy
2004-11-15
打赏
举报
回复
*(a+1)代表的是a[1]
*a+1代表的是a[1][0]
geland
2004-11-15
打赏
举报
回复
这种东西还是要多看C语言基础,基础牢了,学其他的才快
cubooo
2004-11-15
打赏
举报
回复
如果输出的话,a+1是a[0][1]的地址,*(a+1)则是a[0][1]的数值,*a+1是a[0][0]的数值加1
firespirit
2004-11-15
打赏
举报
回复
*(a+1)应该是a[0][1]吧
dudu妈
2004-11-15
打赏
举报
回复
a+1表示a[0][1]的地址
*(a+1)表示a[0][1]的值
*a+1表示a[0][0]的值加1
reflectwang
2004-11-15
打赏
举报
回复
a+1 第一行首地址
*(a+1) 第一行第零列元素地址
*a+1 第0行第一列元素地址
dgyujingjun
2004-11-15
打赏
举报
回复
*(a+1)==a[1][0]
*a+1 == a[0][0]+1
12_
二维数组
行列指针1
另外,a[0]也可以看成是a[0]+0,是一维数组a[0]的0号元素的首地址,而a[0]+1则是a[0]的1号元素首地址,由此可得出a[i]+j则是一维数组a[
c语言对多维数组使用的总结
里面对多维数组的使用做了详细的总结。希望对朋友们有所帮助
简单分析C语言的
二维数组
模拟
从前面的讨论中,我们不难得出一个推论,*a即数组a中下标为0的元素的引用。例如,我们可以这样写: *a=84; 这个语句将数组a中下标为0的元素的值设置为84.同样道理,*(a+1)数组a中下标为1的的元素的引用,以此类推,概而言之,*(a+i)即数组中下标为i的元素的引用,这种写法是如此常用,因此被简记为a[i]。 正是这一概念让C语言新手难于理解,实际上,由于a+i与i+a的含义一样,因此a[i]和i[a]也具有同样的含义。也许某些汇编语言程序员会发现后一种写法很熟悉,但我们不推荐这种写法。 现在我们可以考虑
二维数组
了,正如前面所讨论的,它实际上是以数组为元素的
[大学生考试专用C语言教学课件]第11章 指针和数组.pptx
适应人群:大学毕业生 个人认为是目前所看到过的,最全最细的C语言教学课件,值得拥有
C语言中数组与指针的使用技巧
C语言中数组与C语言中数组与指针的使用技巧指针的使用技巧C语言中数组与指针的使用技巧
C语言
70,012
社区成员
243,257
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章