【发布时间】:2014-11-12 20:41:56
【问题描述】:
关于在 C 中初始化 int 指针的一个非常简单的问题。我是 just informed:
int *varname = {0};
无效。
我还没有找到指出这一点的明确参考,但有信心(基于评论者代表)它可能是无效的,即使它编译、构建和接受来自 calloc/malloc 语句的内存也可以.
有人可以指出上述表达式无效的具体原因吗?
【问题讨论】:
-
@molbdnilo - 好的,但是类似于 duff's device 的语句是无效的,因为它不是 C 语法的一部分?.它是一种混合体,通过某种巧合碰巧提供了一种做某事的方法,标准中没有明确指出。这不相似吗?
-
你被误导了。 C 标准明确允许这种形式的初始化:标量的初始化器应该是单个表达式,可选地用大括号括起来。
-
如果您打算使用数组,这可能很有用:stackoverflow.com/questions/2589749/initialize-array-to-0-in-c
-
@ryyker,没关系,Grzegorz Szpetkowski 首先给出了一个不错的答案。
-
您是否尝试同时将
varname定义为指针并为其创建一个指向的对象,类似于char *ptr = "hello";?如果是这样,请参阅我的答案。如果不是,那我的回答就完全不合时宜了。
标签: c pointers initialization