永发信息网

C语言数组定义时不初始化为什么会报错

答案:5  悬赏:0  手机版
解决时间 2021-03-26 12:51
  • 提问者网友:疯孩纸
  • 2021-03-26 02:18
先定义int ages[5];或int ages[ ];
再一个一个赋值是可以的,但是这样赋值ages = {11,22,33,21,15};
编译器会报错呢?
为什么,能讲下原理吗?
最佳答案
  • 五星知识达人网友:罪歌
  • 2019-06-28 05:15
这是数组的定义 初始化。
int ages[5]={11,22,33,21,15};

你先定义了 然后在赋值的话 要带下标。

像你这样的 是错误的

你要是想在定义了后 在另 外给赋值 需要 一个一个赋值(下标)

要想一起赋值 for(int i=0;i<5;i++)
scanf("%d",ages[i]);

其实这也是一个一个的给数组 赋值 同样也是带有下标的赋值

所以你要是想 以初始化的方式 赋值的话 就需在定义后赋值

不然就是带有下标的赋值。
全部回答
  • 1楼网友:蓝房子
  • 2020-09-21 19:48
写错了,应该是int ages[] = {11,22,33,21,15};
  • 2楼网友:神也偏爱
  • 2020-03-21 23:33
你这么做代表的就不是一个数组了,int没有,整型也算不上,当然不可以
  • 3楼网友:大漠
  • 2019-11-19 17:06
1.后面的类型也有数组,数组只是特殊的结构体,具有相同类型的数据存放到连续的地址上 2 只要相同的类型,相同的编译器,取值范围都是相同的 3 在全局中的变量编译器会自动初始化,但在局部变量中不带初始化的变量是随机值 还有你inta[]错了,不能这样定义 4 char 字符初始化null
  • 4楼网友:举杯邀酒敬孤独
  • 2020-06-24 17:38
语句int ages[5] 在内存中分配了一个地址然后指向ages 所以ages 是一个地址,等价于ages[0] 但是在最初的声明的时候,可以同时赋值,这个是由编译器完成的 但声明之后 ages 就代表了ages [0] 所以只有存储一个值,而不是数组
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯