我试图将整个数组传递给函数,但我得到的最后一个值始终是垃圾值,而不是 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/