第二行为什么错误

[复制链接]
查看11 | 回复7 | 2013-1-24 11:55:26 | 显示全部楼层 |阅读模式
楼主有点粗心了,初学者可以理解。数组的初始化:int a[]={1,2,3}; 这种方式初始化,大括号里写了几个元素那么数组里就有几个元素,相当于int a[3]={1,2,3}int a[3]={0};这样是将a中的所有元素初始化为0;int a[4]={1,2}; 这样是将a[0]初始化为1,a[1]初始化为2,其他的初始化为0后面初始化的话可以这样处理int a[3];a[0]=1;a[1]=2;a[2]=3;但是如果你能一次性的给他初始化,那还是一次性初始化好,不然这样写多麻烦啊。楼主还需要补充下C的语法知识,需要的话请留邮箱追问。追问写成 int a[3];a[]=[1,2,3];为什么不行 回答这个不符号C的语法标准。当初编译器的作者觉得没必要设置这种语法,后面其他的语言例如python,perl,ruby,都支持直接赋值。 赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:26 | 显示全部楼层
你想做什么?你定义了一个数组a[3],其实是a[0],a[1],a[2],a[3]根本就不存在,就算存在它也是一个int型数据,只能给他赋值a[3] = 某个整数;{1,2,3}这种形式只能在给a初始化的时候使用。比如这样是可以的:int a[3] = {1,2,3};赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:26 | 显示全部楼层
int a[3]={1,2,3}; 这样才是给数组a[3]定义并且赋初值,进行初始化 printf(%a,a);如果写成你那样,是先定义了一个数组a[3],然后第二步对他赋值,数组的赋值只能对数组元素单独操作,不能对数组整体操作。int a[3]; a[3]=3;这样才算正确,这里的a[3]表示的是数组元素,意思是将数组a里面的第四个数组元素a[3]进行赋值 printf(%a,a);赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:26 | 显示全部楼层
你可以在定义的时候初始化,也就是int a[3]={1,2,3};你这相当于定义数组之后赋值,不可以像你这样给数组赋值的,如果先定义后赋值,则要写成a[0]=1;a[1]=2;a[2]=3;赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:26 | 显示全部楼层
数组初始化只能在定义处进行,不能在其他地方改为int a[3]={1,2,3};赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:26 | 显示全部楼层
当然错啦!你给一个数组中的一个具体单元,赋予了一个数组。追问如果写成a[]={1,2,3}呢 回答楼上的大虾们已经说得很清楚了。 赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:26 | 显示全部楼层
ffsfsfsdf赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:26 | 显示全部楼层
a[]={1,2,3};不要写3,这样只能给a[3]赋值赞同0|评论
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行