用指针调换数组里面的数有些疑惑
不明白这样为什么不行,求解答!!
#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;
} 数组名a不是首地址,你这样赋值
p = &a #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;
} claws0n 发表于 2018-9-12 11:24
#include//数组变量调换// ?这是输入输出的头文件
int main()
我那个p+i其实是p+n粗心打错了,p = &a; 这样*(p+n)的地址是直接指向a的吗,我的想法就是直接输出最后一个然后一个个往上输,这样就跟调换的结果一样了,但把i改为n还是不对,不知道哪里出现问题了 czj1016130386 发表于 2018-9-12 11:43
我那个p+i其实是p+n粗心打错了,p = &a; 这样*(p+n)的地址是直接指向a的吗,我的想法就是直接输 ...
9 而已,越界了。p = a; 是可以的。 claws0n 发表于 2018-9-12 11:52
9 而已,越界了。p = a; 是可以的。
谢谢了,发现这个是低级错误{:10_250:},犯糊涂啊!! 兄弟你这个并没有实现数组数据的调换,只是对数组逆向输出.
页:
[1]