C++字符串和指针的区别
话说基本没什么区别是吧什么情况下sizeof(字符串)=字符串的长度似乎只有:chara[]="aaaaa";然后才能sizeof(a)=6;如果char*a="aaaa...
话说基本没什么区别是吧
什么情况下sizeof(字符串)=字符串的长度
似乎只有:char a[]="aaaaa";然后才能sizeof(a)=6;
如果char * a="aaaaa";然后sizeof(a)=6;
来个大神告诉我下,是不是只有声明的时候 变量名[]这种才是正儿八经的字符串,别的才是指针
话说我一直把字符串变量当指针用 展开
什么情况下sizeof(字符串)=字符串的长度
似乎只有:char a[]="aaaaa";然后才能sizeof(a)=6;
如果char * a="aaaaa";然后sizeof(a)=6;
来个大神告诉我下,是不是只有声明的时候 变量名[]这种才是正儿八经的字符串,别的才是指针
话说我一直把字符串变量当指针用 展开
4个回答
展开全部
第一个: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
第二个:char *a = "aaaaa"; 实际上这一句包含两步:
1. 内存常量区开辟空间,放上"aaaaa";
2. char *a指针指向1开辟的空间,注意这个空间是常量区,只读的。
这个时候a相当于指针。只是指向了只读的内存空间。而指针在32位系统中用4位来存储。所以这时sizeof(a) = 4
展开全部
指针 就是 地址
数组名 也就是 数组首元素的地址
定义字符数组a 并用abcdef将其初始化
char a[]="abcde"
定义字符指针 a 并让它指向字符串abcde
char * a="abcde" 此时a的值为字符串的首地址,指向字符a
数组名 也就是 数组首元素的地址
定义字符数组a 并用abcdef将其初始化
char a[]="abcde"
定义字符指针 a 并让它指向字符串abcde
char * a="abcde" 此时a的值为字符串的首地址,指向字符a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嗯 oolgloo 是正确的
你应该了解C的数组和指针的关系
数组名不是指针,但可以退化当指针用
指针可不一定是数组
你可以看下 c和指针 这本书
你应该了解C的数组和指针的关系
数组名不是指针,但可以退化当指针用
指针可不一定是数组
你可以看下 c和指针 这本书
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
整两个风马就不相及啊,字符串变量指向的是首地址而且值不可变啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询