可能的重复项:
为什么这个 C 代码会导致分段错误?
char array[6] = "kapil";
array [0] = 'K';
此代码运行正常。
但是以下代码会产生分段错误?
char* array = "kapil";
array [0] = 'K';
为什么首先不产生赛格错误。
char* array = "kapil";
声明一个字符串文字,等效于const char*
。 这可能存在于只读内存中,无法修改。
严格来说,尝试修改它会导致未定义的行为,但在实践中可能会出现 seg 故障。
char* array = "kapil";
使用这种类型的声明,它会在只读上下文中复制kapil
,您可以更改其内容。