下列程序在32位linux或unix中的结果是什么?
func(char *str)
{
printf(" %d",sizeof(str));
printf(" %d",strlen(str));
}
main()
{
char a[]="123456789";
printf(" %d",sizeof(a));
printf(" %d",strlen(a));
func(a);
}
结果: 10 9 4 9
请问为什么两个printf(" %d",sizeof(a));出来的结果会不一样?
lcy_612 于 2011-06-03 20:35:15发表:
学习了。。。。。。。
rootlinenic 于 2011-05-31 16:54:19发表:
不懂。。。。。。
634632257 于 2011-05-30 11:11:26发表:
学习下
znlyj 于 2011-05-17 00:15:32发表:
一个指针。。。。
bird57521 于 2011-05-16 12:27:04发表:
恩,学习了,以前只懂sizeof一个指针是4,没懂strlen一个指针是多少
cxqcxq0177 于 2011-05-16 00:22:14发表:
2楼的正解
seanwu 于 2011-05-14 19:46:03发表:
sizeof计算的都是类型的长度。如果是对象,则转换成类型,再计算类型的长度。在32位系统中。指针类型是32位,4个字节。所以对任何指针用sizeof结果都是4;
lemonade0315 于 2011-05-14 11:21:33发表:
学习了
Olcevt 于 2011-05-14 08:52:32发表:
路过
firstmustok 于 2011-05-13 23:44:06发表:
func(char *str)
{
printf(" %d",sizeof(str)); //指针长度,32位系统便是 4 字节
printf(" %d",strlen(str));
}
main()
{
char a[]="123456789";
printf(" %d",sizeof(a)); //数组长度,包括 ‘\0’, 所以是10个字符
printf(" %d",strlen(a));
func(a);
}