c - 将整个数组传递给函数时获取垃圾值

标签 c arrays

我试图将整个数组传递给函数,但我得到的最后一个值始终是垃圾值,而不是 3。请指出我在哪里犯了错误。

#include<stdio.h>
#include<conio.h>

main() {
    int array[3] = {0, 1, 2, 3};
    display(&array[0], 3);
}
display(int *j, int n) {
    int i;

    for(i=0; i<=n; i++) {
        printf("\n%d", *j);
        j++;
    }
}

最佳答案

你有一个 off-by-one error在你的for循环中。您的数组只有三个元素。您尝试阅读四个 元素而不是三个。

将您的代码更改为此(注意 < 而不是 <= ):

for (i = 0; i < n; i++) {

当数组只有三个空间时,您还尝试用四个元素初始化数组:

int array[3] = {0, 1, 2, 3};

也许您可以尝试更改您的编译器设置以将其标记为警告/错误。然后你可能会得到这样的东西来通知你这个问题:

prog.c: In function ‘main’:
prog.c:13: error: excess elements in array initializer
prog.c:13: error: (near initialization for ‘array’)

关于c - 将整个数组传递给函数时获取垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238141/

相关文章:

c - MakeFile 不编译和构建 .o 文件

c - strstr() 函数获取位置

c - 不要在 C++ 2 中生成相同的随机数

Java在索引处分割字符串而不切割单词

php - 重新声明 - 如果数组有多个值,则重复函数

c - 数据段从位置 0 开始

c - `((void (*)())0x1000)();` 是什么意思?

PHP - 对象数组中丢失引用?

javascript - 访问返回的 Promise 对象数组值

C++ 在二维数组的每一行和每一列中查找最小值和最大值