我观察到只有固定大小数组的一部分被传递给函数的参数。函数的参数是动态数组。请查看下面给出的观察,并帮助指出问题。
代码
void check_errors(int val, int fault_nums[]) {
PRINT("size of array=%d\nsize of first element of an array=%d",sizeof(fault_nums),sizeof(fault_nums[0]));
...
}
main(){
int farry[6] = {82,83,84,85,199,229};
PRINT("TEST:size of array=%d\nTEST:size of first element of an array=%d",sizeof(farry),sizeof(farry[0])); //PRINT is a predefined function
check_errors(1, farry);
...
}
观察
PRINT:TEST:数组大小= 24 TEST:数组的第一个元素的大小= 4
打印:数组大小= 8 数组的第一个元素的大小= 4
答案 0 :(得分:0)
要正确识别数组的大小:
void main() {
int farry[6] = {82,83,84,85,199,229};
size_t szSingleElement = sizeof(farry[0])
,szNumOfElements = sizeof(farry) /szSingleElement;
printf("TEST:size of array=%u\nTEST:size of first element of an array=%u",szNumOfElements,szSingleElement)); //PRINT is a predefined function
}
在32位系统上,整数将是4个字节,指针也将是4个字节。