【发布时间】:2021-08-02 01:01:51
【问题描述】:
我正在使用以下代码计算数组的大小
int arr[] = {1, 2, 3, 4, 5, 6};
int size = *(&arr + 1) - arr;
这给了我 6 作为输出。但是,当我使用相同的代码创建函数时,大小变为-8。这种行为的原因可能是什么。
int sizeArr(int arr[])
{
int size = *(&arr + 1) - arr;
return size;
}
【问题讨论】:
-
欺骗determine size of array if passed to function 和许多其他人。研究数组到指针衰减、数组传递到函数等
-
"这给了我 6 作为输出" 这并不意味着它是数组的大小。