我们让:char* a ="aaa" char a[] = "bbb"
1. 赋值阶段不同
char a[] 是在运行时赋值
char* a 在编译时确定的
2. 存取效率
char a[] 读取时直接把字符串中元素读到寄存器
char *a 要先读指针值,然后从指针中读取字符,显然慢得多
3. 数据类型不同
数组可以自动转换为指针,而指针不能转成数组
字符串等价于字符数组,而不等于字符指针,但是字符串可以转换为字符指针
char a[]: sizeof(a) = 3*sizeof(char)+1*sizeof('\0')=4
char* a: sizeof(a) = 4(指针大小)
4. 存储位置不同
char a[] 存储在栈上,将常量内容复制进来,所以是局部变量
char* a 存储在全局静态存储区,a指向常量地址
欢迎补充!