【发布时间】:2016-10-30 03:57:56
【问题描述】:
我正在尝试以下代码:
int main()
{
char *yo = "yo";
char *whaddup = NULL;
strcpy(whaddup,yo);
}
我得到一个段错误。在这里完成 C noob - 其他地方说我应该将 whaddup 初始化为一个数组。为什么我不能传入指向 null 的指针?
【问题讨论】:
-
同样的原因你不能做
char *whaddup = NULL; *whaddup = 'a';例如。这也是你不能做int *whaddup = NULL; *whaddup = 4;的原因 -
@immibis 请问这是什么原因?
-
NULL 指针不指向任何东西
-
@immibis 但我们可以做
char *in = NULL; in = fgets(you.first_name, 100, stdin);其中you是一些结构。这是否意味着我们可以分配一个指向变量in的指针以使其指向其他地方,而不是文字? -
好吧,
in在您为其分配了非 NULL 的内容后,它不包含 NULL。如果我这样做int in = 5; in = 4;然后在此运行后包含 4,并且不包含 5。in = something;与*in = something;不同 - 后者不会修改in