可能重复:
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