指针定义字符串和数组定义字符串的区别
2016-01-16 20:26
357 查看
char message[]="Hello"; char *message="Hello";
这两行代码一样吗? (上次编程,就是这个问题,让我多花了半个小时检查该错误
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/cry.gif)
)
答案是:不一样
当然,两者有区别,也有相同之处
相同之处:
对两者求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
相关文章推荐
- 泛型(Generic)
- 大型网站技术架构02 网站的高性能架构、网站的可用性架构
- LeecCode 17
- 360极速浏览器访问过的链接变色问题
- Problem H: C语言实验——求阶乘(循环结构)
- tcl/tk的安装
- 2015年年终总结----磕磕绊绊的一年
- UESTC--1272--Final Pan's prime numbers(水题)
- Problem G: C语言实验——某年某月的天数
- 内核发送uevent的API,用户空间解析uevent
- Adobe Creative Cloud 2015最新版全套软件Adobe CC 2015免费下载(Mac/Win)
- 今年的第几天
- 【Matlab】特征值
- UESTC--1272--Final Pan's prime numbers(水题)
- 【Linux】DHCP服务器搭建!
- 算法-蓝桥杯习题(2-1)
- Leetcode 328 Contains Duplicate set和map应用
- Android系统性能调优工具介绍
- 创建私有CA及私有CA的使用
- HDOJ 2516 取石子游戏