jos*_*ppa 0 c memory string pointers
我是学习C语言的新手,我对指针有疑问.
例如,如果我试试这个:
char *pointer;
strcpy(pointer,"Hello, World!\n");
printf(pointer);
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
Segmentation Fault
Run Code Online (Sandbox Code Playgroud)
但如果我试试这个:
char *pointer = "Hello, World!\n");
printf(pointer);
Run Code Online (Sandbox Code Playgroud)
我明白了:
Hello, World!
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么它没有合作strcpy
.这些功能总体上是相同的.
第一个源代码与第二个源代码有什么区别?
如果有人能够解释记忆中发生的事情会很好,这样我就可以更好地了解这一点.
char* pointer
只是给你一个用来访问内存位置的变量.你还没有分配任何内存,所以当你这样做时,strcpy
你正在写任何随机/未定义的值pointer
.
你需要做一些事情:
char* pointer = calloc(LEN);
if (pointer)
{
strcpy(pointer, "Hello World");
printf(pointer);
free(pointer);
}
Run Code Online (Sandbox Code Playgroud)