有大佬知道为什么吗
c语言吧
全部回复
仅看楼主
level 4
远2333 楼主
2019年03月14日 02点03分 1
level 4
远2333 楼主
1
2019年03月14日 02点03分 2
level 4
远2333 楼主
1
2019年03月14日 02点03分 3
level 4
远2333 楼主
1
2019年03月14日 02点03分 4
level 4
远2333 楼主
1
2019年03月14日 02点03分 5
level 4
远2333 楼主
1
2019年03月14日 02点03分 6
level 4
远2333 楼主
1
2019年03月14日 02点03分 7
level 4
远2333 楼主
1
2019年03月14日 02点03分 8
level 4
远2333 楼主
1
2019年03月14日 02点03分 9
level 13
你加一句printf(“%s %s”,s1,s2)试试看
2019年03月14日 02点03分 10
level 7
s1只是一个字符数组,不是字符串
s2是字符串。
字符串是含有结尾空字符的字符数组。
免费教C的老师
3个w点我的用户名点xyz
2019年03月14日 03点03分 12
level 9
strlen()计算的是字符串长度,不包括结尾,sizeof()计算的是占用内存空间,会包括结尾。字符串数组让编译器自动分配空间时,记得加上/0结尾,不然创建出来的是字符数组,而不是字符串。
2019年03月14日 04点03分 13
所以这个5是随机值吗
2019年03月14日 05点03分
是的,字符串的结尾是\0,没有结尾,被认为是字符数组,不当做字符串来存储,所以应该是一个随机值
2019年03月14日 06点03分
2019年03月14日 06点03分
你多运行几次看看结果还是5吗
2019年03月21日 15点03分
level 5

这个和具体的编译器有关系,用gcc编译测试了一下,gcc会默认把定义char s1[]={};的所有元素初始化为字符'\0',而定义char s1[10];里的元素则是随机值。
你上面的运行结果的l1的值应该也是和编译器的默认处理有关系的。可以试试for(int i=0;s1[i] != '\0'; i++) printf("%c ",s1[i]); 输出的是什么。
2019年03月25日 02点03分 14
1