Nor*_* Me 4 c arrays pointers strcpy
昨天我在自制的"strcpy"功能上遇到了一些麻烦.虽然现在有效,但我有点困惑!
char* a = "Hello, World!"; //Works
char b[] = "Hello, World!"; //Works also
strcpy(a, "Hello!"); //Segmentation fault
strcpy(b, "Haha!!"); //Works..
Run Code Online (Sandbox Code Playgroud)
区别在哪里?为什么char指针会导致"分段错误"?
为什么这甚至有效?:
char* a = "Haha"; //works
a = "LOL"; //works..
Run Code Online (Sandbox Code Playgroud)
sim*_*onc 13
char* a = "Hello, World!";
Run Code Online (Sandbox Code Playgroud)
给你一个指向字符串文字的指针.只读存储器中可能存在字符串文字,因此无法更改其内容.
char* a = "Haha"; //works
a = "LOL"; //works..
Run Code Online (Sandbox Code Playgroud)
将指针更改为指向a不同的字符串文字.它不会尝试修改任何字符串文字的内容,因此是安全/正确的.
char b[] = "Hello, World!"
Run Code Online (Sandbox Code Playgroud)
在堆栈上声明一个数组,并使用字符串文字的内容对其进行初始化.堆栈内存是可写的,因此更改内存的内容非常安全.