
以上是我的思路,有逻辑错误。指针用在哪里比较合适
函数中怎么实现指针指向数组的元素然后进行交换?

- trans的两个参数都是int*类型,而传入了int类型,语法错误。
- 对于地址p1和p2来说,在函数里更改地址是没有用的,需要引用传参。
#include <stdio.h>
int main()
{
int trans(int *&p1, int *&p2);
int i, a[10];
int *p1, *p2;
printf("10 numbers\n");
for (i = 0; i < 10; ++i) scanf("%d", &a[i]);
p1 = &a[0];
p2 = &a[9];
for (i = 0; i < 5; ++i) trans(p1, p2); // 不用*p1,*p2
for (i = 0; i < 10; ++i) printf("%d", a[i]);
return 0;
}
int trans(int *&p1, int *&p2) // 用引用传参,这样就可以更改地址
{
int t = *p1;
*p1 = *p2;
*p2 = t;
p1++;
p2--;
return 0;
}

1这里,这应该是函数声明,放到main函数外面
2这里,p1,p2是形参,在函数里该它没有,放到我箭头指的循环中去执行p1++,p2--