Hi, 如果有任何想法与我沟通, 请用: lifr_nj 在 msn.com
关于C语言的sizeof
上一篇 /
下一篇 2007-08-16 15:07:43
/ 个人分类:c/c++
关于C语言的sizeof
今天用c语言写一个函数需要遍历传递进来的一个 数组.显然这种情况需要知道数组的大小. c语言的sizeof行不行呢?网上搜索到一篇有意思的讨论的文章http://bbs.chinaunix.net/viewthread.php?tid=666403&extra=&page=2.从这篇文章还不能得到答案,然后写了一段测试代码测试一下.在VC6, winxp, x86系统上
void foo(int ia[]) {
printf("size = %d", sizeof(ia)); // 4
}
void test11() {
int ia[] = {0,1,2,3, 5,6,7,8,9};
printf("size = %d\n", sizeof(ia)); // 40 = 4*10
foo(ia);
}
在这里,系统给出了不同的sizeof值.从这个现象可以得到下面一些结论
1) sizeof的值是编译时确定的.确定的依据就是sizeof里面symbol的类型.c/c++是强类型的语言.所有的symbol在编译时都是确定的.
2) 显然c的pointer本身并没有携带任何数组长度信息.所以foo和bar函数里,打印出结果是4而不是40.
收藏
举报
TAG: