这是什么原因啊,可以说一下理由吗

img


#include<stdio.h>
int b[100];
int main()
{
    int a,j=0,i;
    while(1)
    {
        scanf("%d",&a);
        if(a==0)
        break;
        b[j]=a;
        j++;
    }
    for(i=j-1;i>=0;i--)
    {
        printf("%d",&b[i]);
    }
    return 0;
}

img

printf("%d",&b[i]);
17行 应该去掉取地址符 & :
printf("%d ",b[i]);
原因:你写&b[i]是取地址,输出的是 b[i] 的地址,而不是 b[i] 的值
你可以看看输出4223064 4223060 4223056 这都是 b[i] 的地址

img

第17行输出的是b[i],不是&b[i],去掉取地址符号

供参考:

#include <stdio.h>
int main()
{
    int a[100], * p = a;
    while (scanf("%d", p) && *p)  p++;
    while (--p >= a) printf("%d ", *p);
    return 0;
}