先定义int ages[5];或int ages[ ];
再一个一个赋值是可以的,但是这样赋值ages = {11,22,33,21,15};
编译器会报错呢?
为什么,能讲下原理吗?
C语言数组定义时不初始化为什么会报错
答案:5 悬赏:0 手机版
解决时间 2021-03-26 12:51
- 提问者网友:疯孩纸
- 2021-03-26 02:18
最佳答案
- 五星知识达人网友:罪歌
- 2019-06-28 05:15
这是数组的定义 初始化。
int ages[5]={11,22,33,21,15};
你先定义了 然后在赋值的话 要带下标。
像你这样的 是错误的
你要是想在定义了后 在另 外给赋值 需要 一个一个赋值(下标)
要想一起赋值 for(int i=0;i<5;i++)
scanf("%d",ages[i]);
其实这也是一个一个的给数组 赋值 同样也是带有下标的赋值
所以你要是想 以初始化的方式 赋值的话 就需在定义后赋值
不然就是带有下标的赋值。
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]
所以只有存储一个值,而不是数组
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯