c/c++语言开发共享数组和指针创建的字符串之间的区别?


可能重复:
C中的char s []和char * s有什么区别?

这有什么区别:

char arr[] = "Hello, world!"; 

还有这个:

 char *arr = "Hello, world!"; 

两个字符串的内存分配在哪里? 为什么我无法更改后一个字符串的内容?

    第一个是专门为arr分配的可写内存,它是一个char数组。 您可以在不调用未定义行为的情况下修改它。 这是完全合法的:

     char arr[] = "Hello, world!"; arr[1] = 'i'; 

    第二个是指向只读字符串的指针。 因此,这是未定义的行为

     char *parr = "Hello, world!"; parr[1] = 'i'; // Cannot write to read-only memory! 

    一些编译器实现中:

     char *a = "Hello, world!"; char *b = "Hello, world!"; a[1] = 'i'; // b[1] == 'i'; 

    这不能得到保证 – 我只是将它包含在内,让您直观地了解为什么它是未定义的行为。

      以上就是c/c++开发分享数组和指针创建的字符串之间的区别?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560060.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐