首页 新闻 会员 周边 捐助

C++关于sizeof的题目

0
悬赏园豆:5 [已解决问题] 解决于 2012-03-08 11:50
void Func ( char str[100])
{
int n2 = sizeof( str );
printf("n2 = %d \n", n2 );

char strlong[100] = "ddddddddddddd";
int n = sizeof( strlong );
printf("n = %d \n", n );
}

请问输出什么,为什么?

左手程序右手诗的主页 左手程序右手诗 | 初学一级 | 园豆:82
提问于:2012-03-07 17:37
< >
分享
最佳答案
0

1楼说的是对的:

sizeof 的形参不管是数组名还是指针 类型,一律解释成指针 ,即占四个字节;

类似于一下情况时:char  char[n];//假设 n是一个常量;

         sizeof 的结果就是n值;

至于2楼的说法:strlen(str)得到的是实际存的字符个数;//注意是字符个数,不包括结尾的'\0'

收获园豆:2
风小手 | 菜鸟二级 |园豆:248 | 2012-03-07 23:05
其他回答(4)
4

4

100

第一个传进去的是str的首地址,4个字节

第二个是栈内存strlong的长度,100个字节

收获园豆:1
arrui | 园豆:206 (菜鸟二级) | 2012-03-07 18:24
0
 1 #include <stdio.h>
2 #include <string.h>
3
4 void Func ( char str[2]){ //参数中数组的大小是无所谓的
5 int n2 = sizeof( str );
6 printf("n2 = %d \n", n2 ); //结果为4,原因我感觉和楼上所说的一样
7
8 char strlong[100] = "ddddddddddddd";
9 int n = sizeof( strlong );
10 int n1 = strlen( strlong );
11 printf("n = %d\n", n ); //100
12 printf("n1 = %d\n\n", n1); //13 字符串"ddddddddddddd"的长度为13
13 }
14
15
16 int main(){
17 char str1[100];
18 Func(str1);
19 return 0;
20 }
收获园豆:2
XiaoweiLiu | 园豆:179 (初学一级) | 2012-03-07 19:58
0

http://oss.org.cn/man/develop/c&c++/c/c.htm

注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

所以sizeof也没办法知道大小了

左手程序右手诗 | 园豆:82 (初学一级) | 2012-03-08 11:49
0
Rollen Holt | 园豆:210 (菜鸟二级) | 2012-03-21 16:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册