通常来说获取数组的长度时不要对指针应用sizeof操作符。现来看看下面这段代码: void clear(int array[]) { for(size_t i = 0; i < sizeof(array) / sizeof(array[0]); i++) { array[i] = 0; } } void dowork(void) { int dis[12]; clear(dis); /*...*/ }
因为size_t被定义为 typedef unsigned int size_t; 您应该使用%zu,%u或%lu而不是%d显示它。 printf("%zu\n", sizet); printf("%u\n", sizet); printf("%lu\n", sizet);