比如 char ch[4]={'a','b','c','d','e',''f,'g'};
以及char ch[4]={'a','b','c','d','e',''f,'g','\0'};和上面的语句如果直接输出有什么不同
C++中,字符型数组初始化时超过数组长度会怎样
答案:4 悬赏:0 手机版
解决时间 2021-03-10 17:18
- 提问者网友:趣果有间
- 2021-03-09 20:44
最佳答案
- 五星知识达人网友:第幾種人
- 2021-03-09 21:12
char ch[4]={'a','b','c','d','e',''f,'g'};
ch[4] 但初始化7+1个字符 产生了数组越界!
修改成:
char ch[]={'a','b','c','d','e',''f,'g'}; //不写,则根据初始化值自动分配相应的空间
或
char ch[8]={'a','b','c','d','e',''f,'g'}; //至少要比初始化数据多才可以
ch[4] 但初始化7+1个字符 产生了数组越界!
修改成:
char ch[]={'a','b','c','d','e',''f,'g'}; //不写,则根据初始化值自动分配相应的空间
或
char ch[8]={'a','b','c','d','e',''f,'g'}; //至少要比初始化数据多才可以
全部回答
- 1楼网友:执傲
- 2021-03-09 23:57
数组名视为“指针常量”(即不可以改变指向),所以str3="string";是错误的;而字符指针是可以改变指向的,所以char *str3;str3="string";是对的。
- 2楼网友:神的生死簿
- 2021-03-09 23:01
初始值超过长度,编译器会报错。
- 3楼网友:春色三分
- 2021-03-09 22:45
在不保存的前提下,第二个会正常输出,第一个会输出 abcdefg烫烫烫烫烫烫
但两个其实都是超出数组,属于非法地址操作。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯