主要表现在以下两方面的不同:

a.修改内容不同。

例如 char a[] = "hello",可以通过下标的方式对其进行修改,而对于char* p = "word",此时p指向常量字符串,所以p[0] = 'x'是不允许的。

b.所占字节数不同。

例如 char* p = "word",p为指针,sizeof(p)得到的是一个指针变量的字节数,而不是p所指向的内存容量。

char a[] = "hello world"; char* p = a;

在32位机器上,sizeof(a) = 12字节,而sizeof(p) = 4字节。

但要注意的是,当数组作为函数参数进行传递时,该数组自动退化为同类型的指针。

指针和指针数组有什么区别(指针和数组是否表示同一概念)(1)

,