桃花飞舞 发表于 2015-8-26 23:45:12

一个输出问题?

int i, j;
char array[] = {'I', 'l', 'f', 'i', 's', 'h', 'C', '\0'};
i = sizeof(array);
j = strlen(array);
printf("%d %d", i, j);
输出是8和7怎么小甲鱼的答案是9和8呢?????

ryxcaixia 发表于 2015-8-27 08:38:11

sizeof计算变量的字节数
strlen计算字符串的长度

按照你的这段程序就是8和7

你应该把小甲鱼答案是9 和8的源码也贴出来

yjip267 发表于 2015-8-27 08:51:30


sizeof计算变量占多大内存字节数。
strlen计算字符串的长度,字符串是以'\0'结束的。并且计算的长度不包括'\0'。对于小甲鱼的源码。要看了才知道。为什么是9和8了

Michael-Bern 发表于 2015-8-27 10:24:29

sizeof是计算变量的字节数的、
strlen才是计算字符串长度的哦,看你想要什么功能了,望采纳。

桃花飞舞 发表于 2015-8-27 22:36:11

ryxcaixia 发表于 2015-8-27 08:38
sizeof计算变量的字节数
strlen计算字符串的长度



《零基础入门学习C语言》第六章考核      7. 以下程序段的输出结果是小甲鱼的答案是d    上边就是源码。我是新手才不确定自己是不是对的。

醉酒青牛 发表于 2015-8-27 23:40:28

你复制源码输进去就ok了,不用纠结。

狼之道 发表于 2015-8-29 14:44:09

你两个源码可能不一样,可能少个字母

sswan512 发表于 2015-8-30 21:22:25

楼上说的都对

桃花飞舞 发表于 2015-8-30 22:25:30

sswan512 发表于 2015-8-30 21:22
楼上说的都对

表示不同意sizeof(array);不管有几个字符都是8;而strlen(array);才和字符个数相关的.

嗓子坏咯 发表于 2015-8-31 11:03:55

sizeof返回定义arr数组时,编译器为其分配的数组空间大小,不关心里面存了多少数据。
strlen只关心存储的数据内容,不关心空间的大小和类型。

嗓子坏咯 发表于 2015-8-31 11:04:27

嗓子坏咯 发表于 2015-8-31 11:03
sizeof返回定义arr数组时,编译器为其分配的数组空间大小,不关心里面存了多少数据。
strlen只关心存储 ...

没找到你说的视频内容

桃花飞舞 发表于 2015-9-1 00:31:12

嗓子坏咯 发表于 2015-8-31 11:03
sizeof返回定义arr数组时,编译器为其分配的数组空间大小,不关心里面存了多少数据。
strlen只关心存储 ...

你怎么则么清楚,是考核里边的   第六章考核      7.题

Ray-allen 发表于 2015-9-2 15:39:45

sizeof是计算字节数的,strlen是计算字符串的长度的,字符串长度不包括'\0'

阔怀 发表于 2015-9-15 17:12:06

看看sizeof和strlen的区别,你就会知道怎么回事了

Deadline 发表于 2016-2-1 22:26:52

'\0'在内存中占了1个字节,但在字符串中\0不显示不占位

qq1242009750 发表于 2016-7-23 20:31:50

因为 sizeof 测量的是数组的长度
而strlen 是测量字符串的长度 不计\0

千亩计者 发表于 2016-8-16 02:04:19

sizeof计算变量的字节数,strlen计算字符串的长度

Damn_it 发表于 2016-9-13 13:02:33

我在想会不会是小甲鱼同志误口了
页: [1]
查看完整版本: 一个输出问题?