返回信息流先写代码
int main()
{
char a[2];
cin>>a;
cout<<a<<endl;
cout<<a[0]<<a[1];
}
然后运行后输入123123123
然后它输出为第一行为123123123
第二行为 12
这表明a和a[]有什么区别呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #95886同步于 2017/7/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
萌新问题一这是dev c++编译器问题吗?
lsj1111
2017/7/29镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
好的,明白了,多谢了
【 在 crazyalltnt (crazyalltnt) 的大作中提到: 】
: a是数组a的首地址,是是常量,遇到结束符停止输出,a[0]和a[1]是第一个,第二个元素
a的空间只有2字节,但你读入的时候给它读了太多,导致数组越界访问。这在C语言里是“未定义行为”,也就是什么事都可以发生,从什么都不发生到机器冒烟都是可以的。
【 在 lsj1111 的大作中提到: 】
: 好的,明白了,多谢了
:
实际上这么写一般的结果是,会把不属于内存地址a到a+2的内容也重写,修改了我们不想修改的内存区域,能不能跑通看运气,程序稍大一点儿程序应该就会出错退出。
哦哦,那在cin语句中空格键是怎么处理呢?例如cin一个char a[3],再cin一个char b[2],运行后在窗口里输入
神话锦 男
这时能正常地在a中存神话锦,b中存男吗?[ema23][ema23]
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: a的空间只有2字节,但你读入的时候给它读了太多,导致数组越界访问。这在C语言里是“未定义行为”,也就是什么事都可以发生,从什么都不发生到机器冒烟都是可以的。
继续上个回复,我定义一个struct类型学生包括学号(char[2]类型),姓名(char[3]),性别(char[2]),年龄(int),然后运行后cin一个学生信息
01 神话锦 男 20
输出时姓名是神??,就很怪
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: a的空间只有2字节,但你读入的时候给它读了太多,导致数组越界访问。这在C语言里是“未定义行为”,也就是什么事都可以发生,从什么都不发生到机器冒烟都是可以的。
多谢
【 在 raaay0608 (raaay0608) 的大作中提到: 】
: 实际上这么写一般的结果是,会把不属于内存地址a到a+2的内容也重写,修改了我们不想修改的内存区域,能不能跑通看运气,程序稍大一点儿程序应该就会出错退出。