c - 在函数参数中传递数组时访问数组的最后一个元素显示垃圾值

标签 c arrays function argument-passing garbage

我在函数参数中传递一个数组,当我尝试在函数主体中使用 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/

相关文章:

c - 如何使用过滤器驱动程序(内核)捕获文件访问尝试并提供对话框以允许/拒绝(用户)?

function - 是否可以在 f# 中编写这样的递归分组函数

javascript - 控制 View 的元素数组 (AngularJS)

javascript - 如何从封闭的 Javascript 函数访问变量?

javascript - 使用 ajax 调用循环遍历函数

c - INSERT 语句后出现非法指令核心转储错误

c++ - NIM 游戏对抗 PC 新手

c++ - setlocale 错误 LNK2019

c - 如何将动态分配的数组传递给子例程

java - 对数组进行排序,以便首先运行最高值