我试图在函数内部(main()函数外部)找到数组中元素的数量。该过程的一部分是以字节为单位查找数组的大小,但当数组传递给函数后,它的大小比它应该小4个字节。由于未知原因传递给函数时数组大小正在减小
这是我的代码的精简版本,打印出主函数中数组的大小,然后打印出已传递给函数的数组大小。这些尺寸应该是相同的,但事实并非如此。
#include <stdio.h>
int main()
{
// Initialize variables
int numbers[3];
// Request user to input an integer 3 times
int i ;
for(i = 0; i < 3; i++)
{
printf("Please enter an integer: ");
scanf("%d", &numbers[i]);
}
// Print size of array outside of function
printf("Size of numbers: %d\n",sizeof(numbers)); // Prints "12"
// Get size of array in function
printf("Size of n: %d\n", debug(numbers)); // Prints "8"
// End main loop function
return 0;
}
int debug(int n[])
{
// Return the size of the array inside the function
return(sizeof(n));
}
此代码输出:
Size of numbers: 12
Size of n: 8
任何想法,这可能是造成这个问题呢?它始终报告比本应少的4个字节。
您正在期待Pascal,Fortran或脚本语言的行为。 C不会那样工作。 – wallyk