永发信息网

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

答案:5  悬赏:0  手机版
解决时间 2021-03-26 12:51
先定义int ages[5];或int ages[ ];
再一个一个赋值是可以的,但是这样赋值ages = {11,22,33,21,15};
编译器会报错呢?
为什么,能讲下原理吗?
最佳答案
这是数组的定义 初始化。
int ages[5]={11,22,33,21,15};

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

像你这样的 是错误的

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

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

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

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

不然就是带有下标的赋值。
全部回答
写错了,应该是int ages[] = {11,22,33,21,15};
你这么做代表的就不是一个数组了,int没有,整型也算不上,当然不可以
1.后面的类型也有数组,数组只是特殊的结构体,具有相同类型的数据存放到连续的地址上 2 只要相同的类型,相同的编译器,取值范围都是相同的 3 在全局中的变量编译器会自动初始化,但在局部变量中不带初始化的变量是随机值 还有你inta[]错了,不能这样定义 4 char 字符初始化null
语句int ages[5] 在内存中分配了一个地址然后指向ages 所以ages 是一个地址,等价于ages[0] 但是在最初的声明的时候,可以同时赋值,这个是由编译器完成的 但声明之后 ages 就代表了ages [0] 所以只有存储一个值,而不是数组
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
6块2v300ah蓄电池和1块12v200ah蓄电池哪种存
学小提琴、看不懂小提琴乐谱怎么学会看?
持有邪教宣传单能否定罪
维多利亚量贩KTV地址在什么地方,我要处理点
锤子t1能玩王者荣耀吗
翻译“you can't always get what you w
消息在收件人设备上可能以损坏什么意思
怎么和女友分手好
在唐诗宋词里面带有潇潇这两个子的诗句有哪些
侍道4 奥义可以用别的武器打出吗
哥哥买了三袋米,弟弟买了两袋米,他们把米放
周瑜是个怎么样的人啊.
春到齐鲁阅读答案
菡美国际美容院(嵩县1店)地址在什么地方,想
给一版墙报镶边要4厘米宽的彩色纸条48厘米如
推荐资讯
FPGA:谁有vhdl语言的I/O复用ram程序啊,
新款奔驰s级仪表只到260
奇异果可以和猪肉一起煲汤吗?
空戒指盒里放一条手链是什么意思
从堤角到武大坐公交怎么去?
藏息相辅的出自
“耿耿于怀”“念念不忘”“罗生门”是什么感
皇片yy频道多少
如何计算市场覆盖率?
怎么洗掉画到衣服上的眼线笔痕迹?
百信移动手机专卖地址在什么地方,想过去办事
光猫的灯全亮了是怎么回事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?