入力として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;
}
2 つの for ループに対して別の関数を作成しようとしましたが、それでも機能しません。このforループが印刷されない理由を知りたいのですが、その下の2つの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 でインデックス作成がどのように機能するかをよりよく理解できるようになりましたが、for ループの条件を変更しない限り、printf は機能しません (上記を参照)。なぜそれは初期条件では機能せず、後者の条件では機能しますか。