关于c++里面的数组

shenlye 2009-02-17 03:31:36

#include "stdafx.h"


int main()
{
char str[]=("试下数组的定义");
while(1)
{
std::cout<<sizeof(str)<<std::endl;
std::cout<<str<<std::endl;
std::cin>>str;
}
return 0;
}

运行输出的数组占了15个字节
然后我继续输入N个1.还是输出了15字节,但是输出的1和输入的一样。
谁能告诉我为什么么。不是应该只能输入15个字节的字符吗..
...全文
92 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dirichlet123_2000 2009-02-17
  • 打赏
  • 举报
回复
2楼正解
Dinelgua 2009-02-17
  • 打赏
  • 举报
回复
谁能告诉我为什么么。不是应该只能输入15个字节的字符吗..

答 C++数组越界没有检查 所以即使越界写有时也ok 所以能写入多个
waizqfor 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 shenlye 的帖子:]
C/C++ code
#include "stdafx.h"


int main()
{
char str[]=("试下数组的定义");
while(1)
{
std::cout<<sizeof(str)<<std::endl;
std::cout<<str<<std::endl;
std::cin>>str;
}
return 0;
}
运行输出的数组占了15个字节
然后我继续输入N个1.还是输出了15字节,但是输出的1和输入的一样。
谁能告诉我为什么么。不是应该只能输入15个字节的字符吗..
[/Quote]
你在创建数组的时候char str[]=("试下数组的定义");
这个数组的大小就已经确定了 所以你不管怎么输出 它的大小一直是15
与你改变数组里的内容没有关系了
OenAuth.Net 2009-02-17
  • 打赏
  • 举报
回复
晕,它又不是直接加在尾部的,你输入的时候它把原来的值覆盖了。
hhyttppd 2009-02-17
  • 打赏
  • 举报
回复
sizeof(str)是在编译时计算的。

65,211

社区成员

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

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