C语言数组赋值问题

无所事事的社青 2013-08-07 12:48:41
C语言数组赋值问题,第四行输出lvalue required as left operand of assignment,如果a[n] == *(a+n),那这样为数组元素赋值为什么不可以?求解释。
int a[3] = {1, 2, 3};
int t = *a+1;
printf("%d\n", t);
*a+1 = 3;
printf("%d", *a+1);
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
warlooy_24 2013-08-07
  • 打赏
  • 举报
回复
引用 2 楼 hai200501019 的回复:
a[n] == *(a+n)。a是数组的首地址,a + n指向数组后面n个a数组长度的地址。 用个图比较容易说明吧 如你所写的,a有三个元素,a + 1 就指向 a的最后一个元素的末尾了
a+n应该是指向a后面n个数组元素类型长度的地址吧,a+1,a+2,a+3对应1,2,3
warlooy_24 2013-08-07
  • 打赏
  • 举报
回复
a[n] == *(a+n)赋值没错,你少了括号,应该是:*(a+1) = 3; *比+优先级强,会先计算*a,所以会出现那样的提示。
海的神话 2013-08-07
  • 打赏
  • 举报
回复
a[n] == *(a+n)。a是数组的首地址,a + n指向数组后面n个a数组长度的地址。
用个图比较容易说明吧
如你所写的,a有三个元素,a + 1 就指向 a的最后一个元素的末尾了
max_min_ 2013-08-07
  • 打赏
  • 举报
回复

*a+1 = 3; //这样是不行的
//赋值运算的左操作数必须是左值

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧