【发布时间】:2015-12-22 13:30:38
【问题描述】:
如果我有以下情况
struct a {
int a;
int b;
bool c;
}
并使用下面的初始化函数
struct ls *ls_new(struct ls **ls, size_t *size)
{
struct ls *m, *n;
n = realloc(*ls, (*size + 1) * sizeof(struct ls));
if (!n)
return NULL;
*ls = n;
m = *ls + *size;
(*size)++;
// init struct
*m = (struct ls) {.a = 0}
return m;
}
当我使用ls_new() 初始化struct a 的实例时,c99 标准保证初始化结构的一个成员也会初始化所有其他成员。 bool c 的默认初始化值是多少?
【问题讨论】:
-
为什么不测试一下看看呢?
-
return m-->return m; -
@SouravGhosh,错字。谢谢。
-
@stanpines 因为“测试”不是阐明语言属性的理想方法,尤其是关于 C 和 C++,其中 未定义行为 的概念允许不同的编译器处理事情不同。
-
我说的是
size参数,它不是作为指针传递的。如果发布实际代码,请复制并粘贴实际代码,而不是在帖子中重写它,那么您将不会在发布的代码中出现错误,从而分散您对实际问题的注意力。要么这样,要么创建一个全新的Minimal, Complete, and Verifiable Example 向我们展示,也可以复制和粘贴。