char *str = "abcde"; 与 char str[] ="abcde"; 有何区别?

[复制链接]
查看11 | 回复3 | 2008-11-27 08:54:26 | 显示全部楼层 |阅读模式
如题.
赫赫,谢谢一楼 22采3纳9 的好意.
不过我的钱多得用不完,而且笔记本也已经有了.
所以奖金与奖品您留着自个儿用吧.

回复

使用道具 举报

千问 | 2008-11-27 08:54:26 | 显示全部楼层
区别还是很大的。1,char *str这个没有实际的内存空间,所指的只是"abcde"字符串而已,所以不能修改其值. 而char str[]这个是真正的把"abcde"保存在了内存中,有实际内存空间,所以,可以修改.2,以指针角度来看,char *str指针可以移动(可以进行str++,str--),但是char str[]不能移动.因为数组可以看成一个常指针.3,大小.. 凡是指针,32位系统均是4个字节.也就是char *str="abcde";sizeof(str)为4;而数组却可以得出其实际大小.char str[]="abcde";sizeof(str)为6(末尾'\0'字符);当然,str...
回复

使用道具 举报

千问 | 2008-11-27 08:54:26 | 显示全部楼层
不一样,char *str = "abcde"; 这个定义出来的是个常量,char str[] ="abcde"; 这个定义的是数组,你要不相信的话,可以做个简单的联系char *str = "abcde"; str[1] = "b";这个就是错误的,而第二个就可以...
回复

使用道具 举报

千问 | 2008-11-27 08:54:26 | 显示全部楼层
一样的,str纪录的都是头指针...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行