char *与char[]的区别

**
统一为英语单词的词序
常量指针(pointer to const)才是
const int *p = 0;
指针常量(const pointer)代表指针(对象)本身是常量,写作
int *const p.
**

原因:

char *p = "hello“;
*(p+2) = 'w';

这里的p是一个指向常量字符串的指针,这个相当于常量指针
它可以相当于:
const char *p = "hello";
根据定义:指向常量字符串的指针不能更改指针指向的内容,但是可以改变本身的值,既是执行
*(p+2) = 'w';//(错误) p = "bcvcbvv";//(正确)


char pp[] = "hello";
这个相当于指针常量,就是本身是个常量<因为pp就是数组的一个引用,引用本身就是指针常量>,但不混为一谈。

第一句话:指针就是存放地址的变量。(就是这么简单。)
第二句话:指针是指针,数组是数组。(只是它们经常穿着相似的衣服来逗你玩罢了。)
摘自数组与指针(一)

相当于:
char * const pp="hello";
根据定义:指针常量不能改变本声的值,但是可以改变指向的值
既是
*(pp+2) = 'W';//(准确) pp = "mnbmbmb";//(错误)

参考博客

数组名和指针的区别
创建时间:20170629
修改时间:20170629

你可能感兴趣的:(char *与char[]的区别)