您的位置:首页 > 其它

指针定义字符串和数组定义字符串的区别

2016-01-16 20:26 357 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: