关于数组初始化的问题

[复制链接]
 楼主| aiping1987 发表于 2010-7-15 09:01 | 显示全部楼层 |阅读模式
我定义一个数组如下
unsigned char databuf[256] = {0x23};
我在用C8051f单片机时写这样的程序,通过WATCH窗口可以看见databuf数组里面的值全为0x23。
为什么我在用S3C2440写裸机程序的时候,用如上的定义方法,同样通过WATCH窗口看数组里面的值,怎么只有databuf[0] = 0x23 ?
luosudou 发表于 2010-7-15 11:43 | 显示全部楼层
编译器不同,
 楼主| aiping1987 发表于 2010-7-15 13:21 | 显示全部楼层
:(编译器不同,怎么会有那么大的差别:L
xinzha 发表于 2010-7-15 15:47 | 显示全部楼层
如果不是c规范中强制规定的细节,怎么实现要看写编译器的人的喜好。
hgjinwei 发表于 2010-7-16 07:32 | 显示全部楼层
:L貌似C规范中数组定义就是“不满数据以0填充”。那个C51不是按照标准C编译的。
chentingsheng 发表于 2010-7-16 10:53 | 显示全部楼层
各个编译器的优化程度是不同的
chentingsheng 发表于 2010-7-16 10:53 | 显示全部楼层
你用的是否ADS1.2
小小粘豆包 发表于 2010-7-17 09:47 | 显示全部楼层
具体的题目是这样的:算法实现两个集合的并集?我的想法是先遍历其中的一个,与另一个数组的元素比较,如果相同,则不插入,否则,将这个元素插入另一个数组的后面。
tanglei9098 发表于 2010-7-17 18:23 | 显示全部楼层
如果按照C语言标准,在定义数组的时候同时给前几个元素赋值,那其他未赋值的元素将初始化为0。

如果出现其它末赋值的元素为第一个值的时候,可能是编译器没有按照标准做。
 楼主| aiping1987 发表于 2010-7-19 10:22 | 显示全部楼层
回7楼,我用的是ADS1.2编译器
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部