char message[]="Hello";
char *message="Hello";
这两行代码一样吗? (上次编程,就是这个问题,让我多花了半个小时检查该错误)
答案是:不一样
当然,两者有区别,也有相同之处
相同之处:
对两者求strlen()长度一致,都是5。
不同之处:
(1)存储模型不同
数组存储是:每个字母占一个单元格,总共需要6个单元格
字符串存储:创建一个名为message的指针单元格,然后指向存储“hello”这个字符串。
(2)sizeof()大小不同
数组存储求sizeof()是6个字节
字符串存储求sizeof()是4个单元格
(3)存储区域不同
数组存储在栈中;
字符串常量存储在全局变量区。
同时,数组存储的变量可以修改,但是字符串常量不可以修改。
附录测试程序:
#include<stdio.h>
#include<string.h>
int main()
{
char message[]="Hello";
char *message1="Hello";
printf("%d\n",sizeof(message));
printf("%d\n",sizeof(message1));
printf("%d\n",strlen(message));
printf("%d\n",strlen(message1));
}
运行结果:
6
4
5
5