野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 297288|回复: 1094

【每日一题讲解】在 32位系统下,执行如下代码,运算结果是多少?

  [复制链接]
发表于 2013-11-10 00:46:02 | 显示全部楼层 |阅读模式
  1. 在 32位系统下,执行如下代码,运算结果是多少?
  2. void func( char str[100])
  3. {
  4.     printf("%d",sizeof( str )   );

  5. }

  6. int main(void)
  7. {
  8.     char str[] = "www.firebbs.cn";
  9.     char *p = str ;
  10.     int n = 10;

  11.     printf("%d,%d,%d,",sizeof (str ),sizeof ( p ) ,sizeof ( n )  );

  12.     func(str);

  13.     return 0;
  14. }
复制代码
请回答问题后再看答案哦,否则 每日一题 就没有意义了。
答错的,讲一下 为什么 会答错 呗!

char str[] = "www.firebbs.cn";
sizeof (str ) ,str是 数组,存放字符串  "www.firebbs.cn" ,注意,字符串后面有 '\0'的,共 15个字节,所以 sizeof (str )  的结果为 15.有的人 以为是 4 或者 14,都是错的
===================================================================================================
char *p = str ;
sizeof ( p ) ,p 是 指针, 指针占用 4 个字节,因此 结果为 4
===================================================================================================
int n = 10;
sizeof ( n ) ,int 在 32 位 系统下 一般都为 4 ,因此 结果为 4
===================================================================================================
void func( char str[100])
{
    printf("%d",sizeof( str )   );

}
这个比较多人选择 100 ,实际上 会 当作指针进行处理,而不是 栈里面开辟 这么大的数据,因而 sizeof(str )是 4 ,而不是 100
回复

使用道具 举报

发表于 2013-11-10 17:17:57 | 显示全部楼层
本帖最后由 苹果鱼吉 于 2013-11-10 17:22 编辑

18,4,4,4抢沙发~我来顶楼主的
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2013-11-10 21:28:18 | 显示全部楼层
苹果鱼吉 发表于 2013-11-10 17:17
18,4,4,4抢沙发~我来顶楼主的

答对了,呵呵
回复 支持 反对

使用道具 举报

发表于 2013-11-11 14:05:41 | 显示全部楼层
看下解释昨天答错了,还没有看解释呢
回复 支持 反对

使用道具 举报

发表于 2013-11-11 17:08:54 | 显示全部楼层
赞赞赞赞赞赞
回复 支持 反对

使用道具 举报

发表于 2013-11-11 17:10:32 | 显示全部楼层
我回答全错了 ==。
回复 支持 反对

使用道具 举报

发表于 2013-11-11 18:48:41 | 显示全部楼层
没看懂啊,火哥,看看解释!谢谢
回复 支持 反对

使用道具 举报

发表于 2013-11-11 23:25:24 | 显示全部楼层
抢沙发~我来顶楼主的
回复 支持 反对

使用道具 举报

发表于 2013-11-12 16:26:09 | 显示全部楼层
sizeof(str)是字符串常量的大小,sizeof(p)是平的地址的大小,n是整形的大小,func中的str也是地址的大小
回复 支持 2 反对 0

使用道具 举报

发表于 2013-11-12 16:30:52 | 显示全部楼层
100,4,4,不知数组名会否转化为指针呢
回复 支持 反对

使用道具 举报

发表于 2013-11-12 16:31:45 | 显示全部楼层
应该是这个吧18 18 10
回复 支持 反对

使用道具 举报

发表于 2013-11-12 16:34:16 | 显示全部楼层
qq85500965 发表于 2013-11-12 16:31
应该是这个吧18 18 10

哥们,你打错了
回复 支持 反对

使用道具 举报

发表于 2013-11-12 18:43:45 | 显示全部楼层
这题我答过了
回复 支持 反对

使用道具 举报

发表于 2013-11-12 21:33:16 | 显示全部楼层
18,4,2,100看答案
回复 支持 反对

使用道具 举报

发表于 2013-11-13 11:46:52 | 显示全部楼层
顶,非常棒的题目
回复 支持 反对

使用道具 举报

发表于 2013-11-14 10:56:11 | 显示全部楼层
18,4,4,4
凑够10个字符
回复 支持 反对

使用道具 举报

发表于 2013-11-15 13:33:40 | 显示全部楼层
看看答案
回复 支持 反对

使用道具 举报

发表于 2013-11-15 21:15:49 | 显示全部楼层
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-11-15 21:42:08 | 显示全部楼层

char str[20];
void main()
{
printf("%d",sizeof(str));

}    20  这样就完美了
回复 支持 反对

使用道具 举报

发表于 2013-11-17 12:30:06 | 显示全部楼层
17 17 4??
回复 支持 反对

使用道具 举报

发表于 2013-11-20 19:13:45 | 显示全部楼层
看答案啊。
回复 支持 反对

使用道具 举报

发表于 2013-11-21 20:05:08 | 显示全部楼层
18.4.4.101
回复 支持 反对

使用道具 举报

发表于 2013-11-22 15:18:56 | 显示全部楼层
不理解    ,what
回复 支持 反对

使用道具 举报

发表于 2013-11-24 11:41:21 | 显示全部楼层
18 4 4               
回复 支持 反对

使用道具 举报

发表于 2013-11-28 11:36:04 | 显示全部楼层
str以传地址的方式传给了func
回复 支持 反对

使用道具 举报

发表于 2013-11-29 12:41:20 | 显示全部楼层
18,18,2,100
回复 支持 反对

使用道具 举报

发表于 2013-11-30 12:56:33 | 显示全部楼层
求答案真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-12-8 10:08:39 | 显示全部楼层
18 18 4
100 走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2013-12-10 23:54:39 | 显示全部楼层
4 1 4走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2013-12-19 18:48:13 | 显示全部楼层
18,4,4,4    看看答案是多少哈
回复 支持 反对

使用道具 举报

发表于 2013-12-21 09:11:34 | 显示全部楼层
18 4 4 100 应该这样吧
回复 支持 反对

使用道具 举报

发表于 2014-1-4 17:51:15 | 显示全部楼层
看看对没。
回复 支持 反对

使用道具 举报

发表于 2014-1-5 11:23:05 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2014-1-5 11:28:15 | 显示全部楼层
void func( char str[100])
{
     printf("%d",sizeof( str )   );

}
这个比较多人选择 100 ,实际上 会 当作指针进行处理,而不是 栈里面开辟 这么大的数据,因而 sizeof(str )是 4 ,而不是 100,还是有些不懂
回复 支持 1 反对 0

使用道具 举报

发表于 2014-1-5 17:05:45 | 显示全部楼层
比雷公还雷人哦~
回复 支持 反对

使用道具 举报

发表于 2014-1-5 17:08:11 | 显示全部楼层
雪域1号 发表于 2014-1-5 11:28
void func( char str[100])
{
     printf("%d",sizeof( str )   );

形参 传递进行 ,是 不会 开辟 这么 大的 数组空间的,而是 仅仅 传递 数组 地址 进去,函数内部 当作数组来处理
回复 支持 反对

使用道具 举报

发表于 2014-1-6 10:59:36 | 显示全部楼层
直接看答案吧
回复 支持 反对

使用道具 举报

发表于 2014-1-7 13:21:37 | 显示全部楼层
18,4,4,1
回复 支持 反对

使用道具 举报

发表于 2014-1-14 15:30:57 | 显示全部楼层
18,4,4 4
回复 支持 反对

使用道具 举报

发表于 2014-1-16 00:31:21 | 显示全部楼层
走过路过,不能错过x
回复 支持 反对

使用道具 举报

发表于 2014-1-16 08:22:40 | 显示全部楼层
1 4 2,字数补丁
回复 支持 反对

使用道具 举报

发表于 2014-1-16 13:38:49 | 显示全部楼层
笑坏我的肚子了   挺好的
回复 支持 反对

使用道具 举报

发表于 2014-1-19 13:22:48 | 显示全部楼层
18,1,4,18..
回复 支持 反对

使用道具 举报

发表于 2014-1-19 22:27:20 来自手机 | 显示全部楼层
哎  看不到答案来自: Android客户端
回复 支持 反对

使用道具 举报

发表于 2014-1-20 16:11:52 | 显示全部楼层
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-1-23 00:40:43 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2014-1-23 23:02:36 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2014-1-24 10:00:01 | 显示全部楼层
帅呆了,赞一个强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-2-7 14:02:30 | 显示全部楼层
18 4 4 100
回复 支持 反对

使用道具 举报

发表于 2014-2-13 01:28:58 | 显示全部楼层
看答案楼
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 06:25 , Processed in 0.048304 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表