int main()
{
char *x = "HelloWorld";
char y[] = "HelloWorld";
x[0] = 'Z';
//y[0] = 'M';
return 0;
}
在上面的程序中,HelloWorld
将处于只读部分(即字符串表)。x
将指向该只读部分,因此尝试修改该值将是未定义的行为。
但y
将在堆栈中分配并HelloWorld
复制到该内存。所以修改 y 可以正常工作。字符串文字:指针与字符数组
这是我的问题:
在下面的程序中,如果内容被修改,两者都会导致分段错误char *arr
。char arr[]
void function(char arr[])
//void function(char *arr)
{
arr[0] = 'X';
}
int main()
{
function("MyString");
return 0;
}
- 它在函数参数上下文中有何不同?
- 不会为函数参数分配内存??
请分享你的知识。