czj1016130386 发表于 2018-9-12 11:13:19

用指针调换数组里面的数有些疑惑


不明白这样为什么不行,求解答!!
#include<stdio.h>//数组变量调换

int main()
{
    int a;
    int i,n,*p;
    for(i=0;i<10;i++)
    {
    scanf("%d",&a);
    }
    for(i=0;i<10;i++)
    {
    printf("%d",a);
    }
    printf("\n");
    p = a;
    for(n=10;n>=1;n--)
    {
    printf("%d",*(p+i));
    }
    printf("\n");
    return 0;
}

BngThea 发表于 2018-9-12 11:22:08

数组名a不是首地址,你这样赋值
p = &a

claws0n 发表于 2018-9-12 11:24:28

#include<stdio.h>//数组变量调换// ?这是输入输出的头文件

int main()
{
    int a;
    int i,n,*p;
    for(i=0;i<10;i++)
    {
    scanf("%d",&a);                //输入资料
    }
    for(i=0;i<10;i++)
    {
    printf("%d",a);                //输出资料
    }
    printf("\n");
    p = a;
    for(n=10;n>=1;n--)
    {
    printf("%d",*(p+i));        //参数不一样……而且这个跟调换差远了~
    }
    printf("\n");
    return 0;
}

void swap(int &x, int &y)        //像这样
{
    int temp;
    temp = x;
    x = y;
    y = temp;
}

czj1016130386 发表于 2018-9-12 11:43:05

claws0n 发表于 2018-9-12 11:24
#include//数组变量调换// ?这是输入输出的头文件

int main()


我那个p+i其实是p+n粗心打错了,p = &a;   这样*(p+n)的地址是直接指向a的吗,我的想法就是直接输出最后一个然后一个个往上输,这样就跟调换的结果一样了,但把i改为n还是不对,不知道哪里出现问题了

claws0n 发表于 2018-9-12 11:52:55

czj1016130386 发表于 2018-9-12 11:43
我那个p+i其实是p+n粗心打错了,p = &a;   这样*(p+n)的地址是直接指向a的吗,我的想法就是直接输 ...

9 而已,越界了。p = a; 是可以的。

czj1016130386 发表于 2018-9-12 12:01:54

claws0n 发表于 2018-9-12 11:52
9 而已,越界了。p = a; 是可以的。

谢谢了,发现这个是低级错误{:10_250:},犯糊涂啊!!

gpf谦默 发表于 2018-9-12 12:33:58

兄弟你这个并没有实现数组数据的调换,只是对数组逆向输出.
页: [1]
查看完整版本: 用指针调换数组里面的数有些疑惑