OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2512|回复: 6

数组长度的疑问?

[复制链接]

49

主题

160

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2017-11-2
在线时间
41 小时
发表于 2017-12-13 16:44:43 | 显示全部楼层 |阅读模式
5金钱
在MDK5里面声明一个数组,如下,没有声明长度
unsigned char         S[];

这个数组会有多长?

最佳答案

查看完整内容[请看2#楼]

以前的C标准是不支持定义变长数组,后面的标准貌似支持,但我们一般不这样干;如果需要变长数组,用指针,然后malloc手动分配,然后free。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2017-12-13 16:44:44 | 显示全部楼层
以前的C标准是不支持定义变长数组,后面的标准貌似支持,但我们一般不这样干;如果需要变长数组,用指针,然后malloc手动分配,然后free。
回复

使用道具 举报

49

主题

160

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2017-11-2
在线时间
41 小时
 楼主| 发表于 2017-12-13 16:45:27 | 显示全部楼层
会初始化为多长?
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2017-12-13 17:01:13 | 显示全部楼层
回炉恶补C语言,这样的编译通过?
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2775
金钱
2775
注册时间
2015-6-1
在线时间
394 小时
发表于 2017-12-13 17:06:24 | 显示全部楼层
作死的定义
自在随心
回复

使用道具 举报

33

主题

215

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2035
金钱
2035
注册时间
2017-12-11
在线时间
454 小时
发表于 2017-12-13 17:08:17 | 显示全部楼层
1>这个数组的长度是在编译期间确定长度的,也就是通过预编译器完成的。

2>不管是预编译器,还是编译器,都是程序,都是“人”写的,既然是“人”写的,当然要符合“人”的意志。

3>如果你没有说明这个数组的长度,也没有给出初始化值,其实预编译器根本不知道应该需要分配多大长度。分配少了,你说“我”小气,分配多了,你说“我”浪费,预编译器也很难做“人”的。

4>好了,你问我要1个,我就给1个;你问我要2个,我就给2个;你没说清楚,我真没法给。。。所以,长度为0.

5>最后,这种问题,其实sizeof()下就出来了,其实都没必要问的。就当我在瞎扯吧。。。
回复

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2017-12-14
在线时间
17 小时
发表于 2017-12-14 18:24:38 | 显示全部楼层
看一下C语言书,数组定义时 必须指定大小;除非定义时初始化 就不用写数组大小
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-12 22:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表