指针和Strcpy的C语言程序外

指针和Strcpy的C语言程序外,c,pointers,output,strcpy,C,Pointers,Output,Strcpy,考虑以下C代码片段: char *sentence = NULL; strcpy(sentence, "Helloworld"); printf ("%s", sentence); 代码段是正确的还是错误的?如果正确,输出是什么 a) 错误 b) 地狱世界 c) Null.Helloworld d) 以上所有内容均不存在。取消对空指针的引用(将数据复制到空指针意味着取消引用)是未定义的行为,您无法了解程序的行为。当然很可能发生崩溃。您必须为sentente分配足够的内存。你的代码调用未定义的行

考虑以下C代码片段:

char *sentence = NULL;
strcpy(sentence, "Helloworld");
printf ("%s", sentence);
代码段是正确的还是错误的?如果正确,输出是什么

a) 错误

b) 地狱世界

c) Null.Helloworld


d) 以上所有内容均不存在。取消对空指针的引用(将数据复制到空指针意味着取消引用)是未定义的行为,您无法了解程序的行为。当然很可能发生崩溃。

您必须为
sentente
分配足够的内存。你的代码调用未定义的行为。它导致,所以任何事情都可能发生,包括调用。从一些问题论文中挑选?当你将字符串放入空指针时,你认为会发生什么?这是一种自杀行为,在任何情况下都应该避免“也许你应该编译这段代码来知道答案?”…同样不太可能。它可以像正确分配内存一样工作。没有任何保证。如果使用空指针,则更可能崩溃。现代操作系统将抓住这一点。但无论如何,它不在C的范围之内。谢谢你的帮助。我在执行此段时也遇到了相同的、未定义的行为,但找不到原因,我现在知道了。@BDH我(真的)希望看到一台机器,其中一个行为未定义的程序会危及您的生命;)嗯,作为一名程序员。@Felix Palmen我想火箭发射器程序中的溢出物将是一个合适的候选人:)