数组在传递给c ++中的函数时被切片

时间:2017-11-09 07:17:02

标签: c++ arrays dynamic-arrays

我观察到只有固定大小数组的一部分被传递给函数的参数。函数的参数是动态数组。请查看下面给出的观察,并帮助指出问题。

代码

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

1 个答案:

答案 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个字节。