C 理解size\u t类型和sizeof运算符时遇到的问题

C 理解size\u t类型和sizeof运算符时遇到的问题,c,arrays,printf,sizeof,size-t,C,Arrays,Printf,Sizeof,Size T,GCC编译器输出: 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)); } sizeof_test2.c:在函数'si

GCC编译器输出:

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));
}
sizeof_test2.c:在函数'sizeof_test2'中:
sizeof_test2.c:6:错误:`size_t'未声明(首次在此函数中使用)
sizeof_test2.c:6:error:(每个未声明的标识符都是
仅报告一次sizeof_test2.c:6:错误:对于每个函数,它
出现在。)sizeof_test2.c:6:error:parse error在“arr_size”之前
sizeof_test2.c:10:错误:'arr_size'未声明(首次用于此
函数)make[2]:[build/Debug/Cygwin Windows/sizeof_test2.o]
错误1生成[1]:[.build conf]错误2

不知道为什么会出现此错误,通过
printf
显示大小类型的正确方法是什么?

大小类型在
stddef.h
标题(以及其他标题,例如
stdio.h
)中定义


请注意,在您的程序中,您使用的是
printf
函数,因此必须包含
stdio.h

size\u t
不是C中内置的类型。您必须包含
标准头,其中定义了
size\u t

stdlib,为了显示它,我想您正在寻找
%z
修饰符

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(“%zu\n”,arr_size);//无符号小数
printf(“%zx\n”,arr_size);//十六进制

size\t
是在
stdlib.h
中定义的,因为您收到了一个未声明的错误。添加了以下内容:#包括已解决的问题。。应该想到这一点,我确实通过NetBeans导航到了标题,但没有想到实际包含它。。谢谢,就是这个<代码>stdlib.h
把它拉了进来,我想,因此我有点困惑。另外,你对
printf
使用了错误的格式代码:可以使用
%d
格式代码(见Deitel-C:如何编程,第6版第271页)。是的,我刚刚包括了它。。感谢并为我的新手错误感到抱歉。@user38541-但请记住,只有%d或%u可能无法在32位和64位计算机上正确编译。在C99中为此添加了%z
#include <stdlib.h>

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