char数组和指向字符串的指针有什么区别?

时间:2014-05-23 09:59:50

标签: c arrays string pointers

我在接受采访时被问到。我们可以更改字符数组的值和指向字符串的指针。

这是我的代码段。

        #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;)工作正常。

1 个答案:

答案 0 :(得分:-1)

在C中,您不能直接将字符数组和常量字符串等同起来 因此你在

得到错误

ch = "ABC"

你需要strcpy用于此目的!

在做的时候

strcpy(ptr, "XYX")

ptr还没有分配任何内存,所以它给出了分段错误!