我在接受采访时被问到。我们可以更改字符数组的值和指向字符串的指针。
这是我的代码段。
#include<string.h>
int main()
{
char ch[]="abc";
char *ptr="xyz";
ptr="xyz";
//strcpy(ptr,"xyz") is giving segmentation fault
//ch="ABC"; // is throwing error: incompatible types in assignment
strcpy(ch,"ABC");
return 0;
}
有人可以解释一下ptr =&#34; xyz&#34;当ch =&#34; ABC&#34;抛出错误和strcpy(ptr,&#34; xyz&#34;)给出了分段错误和strcpy(ch,&#34; ABC&#34;)工作正常。
答案 0 :(得分:-1)
在C中,您不能直接将字符数组和常量字符串等同起来 因此你在
得到错误 ch = "ABC"
你需要strcpy用于此目的!
在做的时候
strcpy(ptr, "XYX")
ptr还没有分配任何内存,所以它给出了分段错误!