C++新手的简单问题

nnh 2006-06-15 03:40:42
学习在数组中使用字符串,有如下代码:

#include <iostream>
#include <cstring>
int main()
{
using namespace std;
char name[0] = "a";
cout << name[0];
system("pause");
return 0;
}

为何提示 char name[0] = "a"; 这行出错呀?把0改为2才可正确输出a.

新手开始学C++,望指教,谢谢.在线等.
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nnh 2006-06-15
  • 打赏
  • 举报
回复
谢谢大家了.
jackiehb 2006-06-15
  • 打赏
  • 举报
回复
楼上说的对。
sarh2os 2006-06-15
  • 打赏
  • 举报
回复
rabbit729(无名胜有名) 说的一点错都没有。只是你没有理解他的意思。
字符串和字符数组的区别的就是,字符串是以‘\0’为结束字符的数组。
例如你提到的:
char name[2]=“a”;等于:char name[2]={'a','\0'};
char name[4]="abc";等于:char name[4]={'a','b','c','d','\0'}
字符串,得存储方式是除了双引号里面的所有字符末尾再增加一个'\0'。所以:
储存字符串的数组的长度=字符串长度+1。
这个1就是用来储存隐藏的'\0'
nnh 2006-06-15
  • 打赏
  • 举报
回复
按楼上的说法:

而"a"试一个字符串,要存储这个字符串至少需要两个单位的空间.

一个字符只要一个空间就可以了吧.

如:
#include <iostream>
#include <cstring>
int main()
{
using namespace std;
char name[4] = "abc";
cout << name[2];
system("pause");
return 0;
}

就显示c.

我的说法对不对呀?

rabbit729 2006-06-15
  • 打赏
  • 举报
回复
char name[0] = "a"; 因为你的char name[0]没有声明空间,而"a"试一个字符串,要存储这个字符串至少需要两个单位的空间,其中字符串末端存储'\0'字符。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧