请教一个关于数组的小问题

langren919 2010-12-04 04:12:16
写了下面的测试程序,不大明白数组为何不能重新赋值:

void main()
{
int recd[6]={1,2,3,6,89,9};
int i;
for (i=0;i<6;i++)
{
printf("%d,",recd[i]);
}
printf("\n");//以上正确,下一句出错

recd[6]={6,9,10,7,29,90};
for (i=0;i<6;i++)
{
printf("%d,",recd[i]);
}
printf("\n");

}

看了书,大致的感觉就是,recd[6]={6,9,10,7,29,90};这种赋值方式,只有在定义的时候才能使用,其他时间想修改它的值可能需要下面的方法:

void main()
{
int recd[6]={1,2,3,6,89,9};
int i;
for (i=0;i<6;i++)
{
printf("%d,",recd[i]);
}
printf("\n");//

/* recd[6]={6,9,10,7,29,90};*/

recd[0]=6;
recd[1]=9;
recd[2]=10;
recd[3]=7;
recd[4]=29;
recd[5]=90;
for (i=0;i<6;i++)
{
printf("%d,",recd[i]);
}
printf("\n");

}


希望指点一下,是什么原因使得不能重新赋值,如recd[6]={6,9,10,7,29,90};
...全文
61 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuxian2009 2010-12-04
  • 打赏
  • 举报
回复
首先,有花括号括起来的这个列表,叫做数组的“初始化列表”^^,所以就只能用于初始化咯~
另外从本质来说:C语言中,数组在主存储器中保留一片连续的存储单元,最低的地址对应花括号中列表元素的第一个位置,最大的地址对应于花括号列表元素的最后一个元素。

你的情况是:recd[6]={6,9,10,7,29,90};
这里有两个错误。
1.recd[6]是一个存储单元,你正在试图将花括号里面的6个值赋给一个地址~一个鸽巢怎么能容得下6只鸽子呢~~~
2.你定义为int recd[6],所以这个数组的索引最高为5,而上面的recd[6]的引用本身就是一个错误,越界了。
呵呵,共同学习~~
zhf_198647 2010-12-04
  • 打赏
  • 举报
回复
2L正解……
GIantPerson 2010-12-04
  • 打赏
  • 举报
回复
#2 正解!
这决定了这种方法只能在初始的时候赋值。
就想叫yoko 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 q191201771 的回复:]
你这么想,如果你可以recd[6]={6,9,10,7,29,90};的话
那么你要访问recd的第6个元素的时候怎么写?
[/Quote]
说错了,第6个元素是recd[5],recd[6]是越界访问了
就想叫yoko 2010-12-04
  • 打赏
  • 举报
回复
你这么想,如果你可以recd[6]={6,9,10,7,29,90};的话
那么你要访问recd的第6个元素的时候怎么写?
zyyjaf 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yaoliang11 的回复:]
recd[6]相当于recd的第七个元素,越界了。
所以会退出。

重新赋值可以想另外的方法,因为你那个赋值的方法只能在初始化的时候用。
[/Quote]
正确!
哈几油 2010-12-04
  • 打赏
  • 举报
回复
recd[6]相当于recd的第七个元素,越界了。
所以会退出。

重新赋值可以想另外的方法,因为你那个赋值的方法只能在初始化的时候用。
至善者善之敌 2010-12-04
  • 打赏
  • 举报
回复
一个函数体内的数组是不能被重复定义的!

69,369

社区成员

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

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