gpt4 book ai didi

c - 数组不会使用指针在 C 中反向打印

转载 作者:太空狗 更新时间:2023-10-29 15:16:24 24 4
gpt4 key购买 nike

我正在尝试制作一个程序,该程序将 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 循环条件(见上文)。为什么它不适用于初始条件但适用于后者。

最佳答案

哇哦!

这个:

scanf("%d",(array+(4*i)));    //Works

非常错误,正在覆盖内存!你为什么乘以指数?你不需要那样做,C 可以自己索引。它应该只是:

scanf("%d", &array[i]);

你想要第 i:th 数组成员的地址,这么说吧,不要用奇怪的乘法拐弯抹角。

如果你真的想“使用指针”,如评论中所述,你可以这样做:

scanf("%d", array + i);

这是可行的,因为 array 是指向数组第一个元素的指针,添加 i 是对指针算法的完全有效使用; C 将计算正确的指针,知道数组中每个 int 的大小。

关于c - 数组不会使用指针在 C 中反向打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17565526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com