This topic has been archived. It cannot be replied.
-
工作学习 / 学科技术讨论 / 请教一个sizeof问题 :以下片段,结果会是什么, 为什么? 谢谢
char *msg1[] = {
"Hello"
"World",
"Hello world! 1,0",
};
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
int MAIN(int argc, char **argv);
int main(int argc, char *argv[])
{
printf("%d:%d:%d:%d\n", ARRAY_SIZE(msg1), sizeof(msg1),sizeof((msg1)[0]), ARRAY_SIZE(t));
return 0;
}
-xw1196(没有);
2009-8-9
{356}
(#5473730@0)
-
compile error: ‘t’ undeclared (first use in this function)
-qwertyasd(开心就好);
2009-8-10
(#5474269@0)
-
sorry, 加一句
int t[10][20];
-xw1196(没有);
2009-8-10
(#5474327@0)
-
3:12:4:10 result from gcc 4.3.2 on Linux wirh kernel2.6.29-3.2-pae
-qwertyasd(开心就好);
2009-8-10
(#5474434@0)
-
就是奇怪我的结果为什么是
2:8:4:10
-xw1196(没有);
2009-8-10
(#5474626@0)
-
版本: Linux debian 2.6.26-2-686 #1 SMP Sun Jul 26 21:25:33 UTC 2009 i686 GNU/Linux
-xw1196(没有);
2009-8-10
(#5474629@0)
-
你"Hello"和"World"少了个逗号,被当成一个词了;)
-baalinca(三碗不过冈十点不上网);
2009-8-10
(#5474671@0)
-
谢谢,我怎么愣是没看出来。
-xw1196(没有);
2009-8-10
(#5474973@0)
-
结果应该是3:??:??:10msg1是指针数组,sizeof(msg1)=3*sizeof(指针)
msg1[0]是指针sizeof(msg1[0])=sizeof(指针)
指针的大小根据系统不同可能是4也可能是8。
sizeof(t)=10*20*sizeof(int)=800(?)
sizeof(t[0])=20*sizeof(int)=80(?)
sizeof(int)一般都是4。
-baalinca(三碗不过冈十点不上网);
2009-8-10
{232}
(#5474350@0)