我在函数参数中传递一个数组,当我尝试在函数主体中使用 arr[-1]
访问最后一个元素时,我得到了一些垃圾。谁能解释一下为什么会这样?
代码如下:
#include<stdio.h>
using namespace std;
int binsearch(int nelement, int arr[],int maxsize)
{
int low = 0;
int high = maxsize;
printf("%d",arr[-1]);
return 0;
}
void main()
{
int arr[] = {1,2,3,4,5,6,7,8,9};
int flag = 3;
printf("%d\n",arr[8]);
flag = binsearch(flag,arr,sizeof(arr));
}
这是输出:
9
-858993460
最佳答案
arr[-1]
不访问最后一个元素。从概念上讲,它访问第一个元素之前的空间,但未定义行为。
要访问最后一个元素,请使用 arr[nelement-1]
或 arr[NumberOfElements-1]
,具体取决于您对最后一个元素的含义。 (您是考虑让数组只包含 nelement
元素,还是想要整个分配数组中的最后一个元素?如果是后者,您需要知道数组中元素的数量,以便计算最后一个的索引。)
关于c - 在函数参数中传递数组时访问数组的最后一个元素显示垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14464413/