C++字符串和指针的区别

话说基本没什么区别是吧什么情况下sizeof(字符串)=字符串的长度似乎只有:chara[]="aaaaa";然后才能sizeof(a)=6;如果char*a="aaaa... 话说基本没什么区别是吧
什么情况下sizeof(字符串)=字符串的长度
似乎只有:char a[]="aaaaa";然后才能sizeof(a)=6;
如果char * a="aaaaa";然后sizeof(a)=6;
来个大神告诉我下,是不是只有声明的时候 变量名[]这种才是正儿八经的字符串,别的才是指针
话说我一直把字符串变量当指针用
展开
 我来答
oolgloo
2013-10-30 · TA获得超过2636个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:665万
展开全部
第一个:char a[] = "aaaaa"; 等价于 char a[6] = {'a','a','a','a','a','\0'} 是个数组,所以sizeof(a) = 6 * sizeof(char) = 6 * 1 = 6,每个char占1个字节。

第二个:char *a = "aaaaa"; 实际上这一句包含两步:
1. 内存常量区开辟空间,放上"aaaaa";
2. char *a指针指向1开辟的空间,注意这个空间是常量区,只读的。
这个时候a相当于指针。只是指向了只读的内存空间。而指针在32位系统中用4位来存储。所以这时sizeof(a) = 4
1124981644
2013-10-30 · TA获得超过1099个赞
知道小有建树答主
回答量:1020
采纳率:100%
帮助的人:489万
展开全部
指针 就是 地址
数组名 也就是 数组首元素的地址
定义字符数组a 并用abcdef将其初始化
char a[]="abcde"

定义字符指针 a 并让它指向字符串abcde
char * a="abcde" 此时a的值为字符串的首地址,指向字符a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LycrusHamster
2013-10-30 · TA获得超过889个赞
知道小有建树答主
回答量:487
采纳率:100%
帮助的人:114万
展开全部
嗯 oolgloo 是正确的
你应该了解C的数组和指针的关系
数组名不是指针,但可以退化当指针用
指针可不一定是数组

你可以看下 c和指针 这本书
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Find_Mu
2013-10-30 · 超过18用户采纳过TA的回答
知道答主
回答量:106
采纳率:66%
帮助的人:32.1万
展开全部
整两个风马就不相及啊,字符串变量指向的是首地址而且值不可变啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式