管理员
最后登录1970-1-1
在线时间 小时
注册时间2013-3-25
|
- 在 32位系统下,执行如下代码,运算结果是多少?
- void func( char str[100])
- {
- printf("%d",sizeof( str ) );
- }
- int main(void)
- {
- char str[] = "www.firebbs.cn";
- char *p = str ;
- int n = 10;
- printf("%d,%d,%d,",sizeof (str ),sizeof ( p ) ,sizeof ( n ) );
- func(str);
- return 0;
- }
复制代码 请回答问题后再看答案哦,否则 每日一题 就没有意义了。
答错的,讲一下 为什么 会答错 呗!
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 |
|