aluckdog
这个sizeof路是对的敌我您正在处理未作为参数接收的数组。作为参数发送给函数的数组被视为指针,因此sizeof将返回指针的大小,而不是数组的大小。因此,在函数内部,此方法不起作用。相反,始终传递一个附加参数。size_t size指示数组中的元素数。测试:#include <stdio.h>#include <stdlib.h>void printSizeOf(int intArray[]);void printLength(int intArray[]);int main(int argc, char* argv[]){
int array[] = { 0, 1, 2, 3, 4, 5, 6 };
printf("sizeof of array: %d\n", (int) sizeof(array));
printSizeOf(array);
printf("Length of array: %d\n", (int)( sizeof(array) / sizeof(array[0]) ));
printLength(array);}void printSizeOf(int intArray[]){
printf("sizeof of parameter: %d\n", (int) sizeof(intArray));}void printLength(int intArray[]){
printf("Length of parameter: %d\n", (int)( sizeof(intArray) / sizeof(intArray[0]) ));}输出(在64位Linux操作系统中):sizeof of array: 28sizeof of parameter: 8Length of array: 7Length of parameter: 2输出(在32位Windows操作系统中):sizeof of array: 28sizeof of parameter: 4Length of array: 7Length of parameter: 1