我有这样两个结构
struct table_element
{
struct table_val * table_val_arr;
int count_arr;
};
struct hash_table
{
struct table_element table_element_arr[MAX_NUMBER];
};
这是我的测试方法
void test(struct hash_table * table)
{
int count;
struct table_element * tab_element;
for(count = 0; count < MAX_NUMBER; count++)
{
tab_element = &table->table_element_arr[count];
if(tab_element->table_val_arr == NULL)
{
printf("\nNULLLL!!!!!\n");
}
else
{
printf("\nOK!!!!!\n");
}
}
}
下面是我如何使用它
int main(int argc, char **argv)
{
struct hash_table m_hash_table;
test(&m_hash_table);
...
我希望所有值都是NULL
,但有时我会得到OK
有时NULL
...
我做错了什么?
如何初始化为NULL?
最佳答案
在函数内部定义的非静态变量如果未明确初始化则具有不确定值,这意味着您不能依赖它们可能包含的任何内容。
您可以通过为变量提供初始值设定项来解决此问题:
struct hash_table m_hash_table = {{NULL, 0},{NULL, 0},/*repeat MAX_NUMBER times*/};
或者使用memset
:
memset(&m_hash_table, 0, sizeof(m_hash_table));
关于c - 如何用 NULL 初始化结构指针变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59900970/