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

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

白猪掌柜的
浏览 268回答 3
3回答

烙印99

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

一只萌萌小番薯

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

aluckdog

因为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''......
打开App,查看更多内容
随时随地看视频慕课网APP