char s1[] = "12345", *s2 = "1234"; printf("%d\n", strlen(strcpy(s1, s2)));
4
5
9
10
1. 字符串最后以 ’ \0 ’ 结束。strcpy将'1234\0'复制到目的地址
2. strlen()遇到 ’ \0 ’ 停止
strcpy(s1,s2)这个函数是把s2字符串拷贝到s1这个字符串,同时也把s2的 '\0' 拷过去,所以覆盖了s1的所有字符
1. strcpy将'1234\0'复制到目的地址
char s1[] = "123456",a[]= "1234"; char* s2 = a; strcpy(s1, s2); cout << sizeof(s1); //此时输出是 4
1 - strcpy(s1,s2):s2字符串拷贝到s1这个字符串,同时也把s2的 '\0' 拷过去,所以覆盖了s1的所有字符。(在空间足够的情况下,当然遇到s1的空间不足以存放s2,另考虑),所以strcpy执行完后是“1234” strlen("1234") 就是4了
2 - strlen()函数:计算指定字符串 str 的长度,但不包括结束字符,遇到\0是结束计算,不算 \0,且从1开始计数。
sizeof():是一个单目运算符,计算包括结束字符在内的长度。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题