LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1039|回复: 5

字符数组初始化

[复制链接]
发表于 2005-3-10 18:53:50 | 显示全部楼层 |阅读模式
在写C程序时,这样初始化字符数组:
char buff[] = {};
请教各位,这样写有问题吗?编译也不出错,但好像没见人这么用过,请各位大侠指教。
发表于 2005-3-11 08:27:37 | 显示全部楼层
一个空数组,相当于 char buff[0];这样写什么目的?

倒是看到有人在结构里面写 char buff[0];为了标记一个位置。
回复 支持 反对

使用道具 举报

发表于 2005-3-11 16:51:42 | 显示全部楼层
Post by tmq1980802
在写C程序时,这样初始化字符数组:
char buff[] = {};
请教各位,这样写有问题吗?编译也不出错,但好像没见人这么用过,请各位大侠指教。

在C99中应该是可以用的
叫Flexiable array吧
你在后面可以这样
buff = (char*)malloc( 5) /*想当于 char buff[5]; */
使用gcc -std=c99 编译试试,我也没有试验过

buff[0]这个是GCC对C的扩充,不是标准C的
回复 支持 反对

使用道具 举报

发表于 2005-3-11 17:24:11 | 显示全部楼层
buff = (char*)malloc(5); 用 -std=c99 编不过。

如果这样可以,buff 和指针又有什么区别呢?
回复 支持 反对

使用道具 举报

发表于 2005-3-11 18:35:19 | 显示全部楼层
Post by doubleelec
buff = (char*)malloc(5); 用 -std=c99 编不过。

如果这样可以,buff 和指针又有什么区别呢?

哦,是我弄错了
我指的那个正确的叫法应该是Flexible Array Members(可以参考http://www.john.findlay1.btinternet.co.uk/Tuts/FlexArrs.htm )
只是用在struct中
回复 支持 反对

使用道具 举报

发表于 2005-3-14 08:32:51 | 显示全部楼层
ok,明白了
回复 支持 反对

使用道具 举报

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

本版积分规则

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