我正在尝试制作一个程序,该程序将 10 个数字作为输入并使用 C 中的指针以相反的顺序输出它们。
#include<stdio.h>
#define N 10
int array[N]; //Global variable
int main(void) {
int j;
int i;
printf("Enter 10 numbers: ");
for (i=0;i<N;i++) {
scanf("%d",(array+(4*i))); //Works
}
for (j=N-1;j<0;j--) {
printf("%d",array[j]); //Doesn't print, using *(array+j*4) doesn't
//print also
}
printf("\n");
printf("%d\n",*(array)); //Works so scanf works
printf("%d\n",*(array+4)); //Works so scanf works
return 0;
}
我已经尝试为两个 for 循环创建一个单独的函数,但它仍然不起作用。我想知道为什么这个 for 循环不打印,但它下面的两个 printfs 打印。
编辑:
我的新代码是
#include<stdio.h>
#define N 10
int array[N]; //Global variable
int main(void) {
int j;
int i;
printf("Enter 10 numbers: ");
for (i=0;i<N;i++) {
scanf("%d",(array+i)); //Works
}
for (j=N-1;j<0;j--) { //it is supposed to be j>=0 or j>0 WHY
printf("%d",array[j]); //Doesn't print, using *(array+j) doesn't
//print also
}
printf("\n");
printf("%d\n",*(array)); //Works so scanf works
printf("%d\n",*(array+1)); //Works so scanf works
return 0;
}
感谢所有的帖子,我现在对 C 中的索引如何工作有了更好的理解,但是 printf 仍然不能工作,除非我改变 for 循环条件(见上文)。为什么它不适用于初始条件但适用于后一个条件。