了解size_t类型和sizeof运算符的问题

时间:2012-09-25 16:41:24

标签: c arrays printf sizeof size-t

void sizeof_test2();

void sizeof_test2()
{
    int array[5];
    size_t arr_size = sizeof(array);

    printf( "sizeof:\n"
            "array = %d\n"
            "arr_size = %d\n", sizeof(array), sizeof(arr_size));
}

GCC编译器输出:

sizeof_test2.c: In function `sizeof_test2':  
sizeof_test2.c:6: error: `size_t' undeclared (first use in this function)  
sizeof_test2.c:6: error: (Each undeclared identifier is<br>
reported only once sizeof_test2.c:6: error: for each function it<br>
appears in.) sizeof_test2.c:6: error: parse error before "arr_size"<br>
sizeof_test2.c:10: error: `arr_size' undeclared (first use in this<br>
function) make[2]:  [build/Debug/Cygwin-Windows/sizeof_test2.o]<br>
Error 1 make[1]:  [.build-conf] Error 2<br>  

不知道为什么我收到此错误,通过printf显示size_t类型的正确方法是什么?

3 个答案:

答案 0 :(得分:6)

size_t类型在stddef.h标头中定义(以及其他标头,例如stdio.h)。

请注意,在您的计划中,您使用的是printf功能,因此您必须包含stdio.h

答案 1 :(得分:3)

stdlib是你想要的,为了显示它,我认为你正在寻找%z修饰符

#include <stdlib.h>

size_t arr_size;
printf("%zu\n", arr_size);  // unsigned decimal 
printf("%zx\n", arr_size);  // hex 

答案 2 :(得分:1)

size_t不是C中的内置类型。您必须包含<stddef.h><stdlib.h>标准标题,其中size_t已定义。