为了账号安全,请及时绑定邮箱和手机立即绑定

请问在C++语言中,为什么下面程序为什么显示的是boy 而不是 boy a?

请问在C++语言中,为什么下面程序为什么显示的是boy 而不是 boy a?

C++ C
白猪掌柜的 2022-02-09 17:05:47
#include<iostream.h>#include <string.h>void main (void){char str1[20] = "I am a";char str2[20] = "boy";strcpy(str1,str2);cout<<str1;}
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

字符数组都有个隐藏的字符‘\0’,所以str2[20]实际应该是"boy\0",‘\0’是一个数组结束的标志。使用strcpy时,复制过去的是boy\0,所以数组str1的值其实就是boy.因为boy跟着结束标志‘\0’。

查看完整回答
反对 回复 2022-02-14
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

这样就行了

#include<iostream.h>
#include <string.h>
void main (void)
{char str1[20] = "I am a";
char str2[20] = "boy";
strcat(str1,str2); //////////////改成这句
cout<<str1;
}



查看完整回答
反对 回复 2022-02-14
?
aluckdog

TA贡献1847条经验 获得超7个赞

因为strcpy将boy后面的结束符也复制到str1里面了
str1在内存中的存储如下
str1 boy
[0] 98 'b'
[1] 111 'o'
[2] 121 'y'
[3] 0 ''
[4] 32 ' '
[5] 97 'a'
[6] 0''
[7] 0''
...
..
.



查看完整回答
反对 回复 2022-02-14
  • 3 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信