我正在尝试将指针y分配给指针x,* x = * y但是如果testChar是指针则会崩溃。
char *testChar = "abc";
char *x = testChar;
char *y = testChar + 1;
char temp;
temp = *x;
*x = *y;
*y = temp;
如果我将代码更改为char testChar []而不是* testchar,那么它的工作正常。任何人都能解释一下这些差异吗?
答案 0 :(得分:3)
字符串" abc"存储在只读存储器(程序的二进制文件)中。因此,您试图修改只读数据,这是不可能的。
相反,你可以这样做:
char *testChar = strdup("abc"); // allocate new (writable) memory and copy this const string there.
char *x = testChar;
char *y = testChar + 1;
char temp;
temp = *x;
*x = *y;
*y = temp;
请注意,testChar
指向您不再需要时自由负责的内存(与malloc
相同)。