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:

 

评分:0

我来说两句

Open Toolbar