【发布时间】:2021-03-09 02:53:31
【问题描述】:
我目前正在参加哈佛的 CS50x 课程,遇到了以下问题。
在下面的简短摘录中,hashtable[i] 默认设置为 null 吗?我的印象是,当我为 10 个节点(如下所示)分配足够的内存时,我应该得到 10 个不同的地址而不是空指针。但是,我正在学习的课程似乎表明,即使我为 10 个节点分配了足够的内存,也不会立即为它们分配地址。相反,它们将被分配空指针。
typedef struct node
{
char word[N + 1];
struct node *next;
}
node;
node *hashtable[10];
【问题讨论】:
-
你得到十个不同的地址,例如,十个可以存储地址的空格。但它们仍然可以具有相同的值,即指向相同的事物(或指向相同的缺失事物,即全部为空)。
-
当然,指针中存储的地址值也可以只是无效垃圾。但无论如何,指针当然不会指向节点,因为还没有任何节点可供它们指向。
-
不管怎样,教科书对此有什么看法?
-
如何/是否初始化取决于它的声明位置。
标签: arrays c scope initialization cs50