c语言运用指针进行数组逆序排放

img


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

img

  1. trans的两个参数都是int*类型,而传入了int类型,语法错误。
  2. 对于地址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;
}

img


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