char数组和char指针的使用区别和一些注意事项

版权声明:转载请注明出处。作者:两仪织,博客地址:http://blog.csdn.net/u013894427 https://blog.csdn.net/u013894427/article/details/83820624

const用法

const char* p;表示p是一个指向常量字符的指针
char* const p;表示p是一个指向字符的常量指针,p是不允许改变的

另外要注意的是

const char* p等价于 char const *p

也就是说const描述char和*p是等价的

char* p的内存分配方式

char* p_char=“123”;

上面的代码相当于是在常量区存储一个"123",然后创建一个指针p_char指向这个区域

这样创建的p_char是一个常量,在程序运行结束之后才会销毁。

在部分编译器里面,会报如下问题,即不能把字符串常量转变为char*

warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

如果要解决这个问题,需要在char*前面加上const,让两者类型一致即可。

p_char[0]="4";错误做法,常量区的内容不能修改,所以感觉char* p方法定义的变量不能传入strcmp()之类的函数里面。<br>
p_char="1234";正确做法,指针指向的地址是可以修改的。<br>

char[] 的内存分配方式

char[] p_array=“123”;相当于在常量区存储一个"123",然后在栈区申请内存,把"123"复制过来,p_array指向栈区的"123"

这样创建的p_array存放在栈区,代码运行结束之后就会销毁。

猜你喜欢

转载自blog.csdn.net/u013894427/article/details/83820624