问答详情
源自:5-13 内部函数与外部函数

指针的调用

#include <stdio.h>
void cs(int *a);
int main()
{
 int a[4], b, *c;
 c = a;
 printf("请输入这10个数\n");
 for (b = 0; b<4; b++)
  scanf("%d", &a[b]);
 cs(c);
 for (b = 0; b<4; b++)
  printf("%d ", a[b]);
}
void cs(int *a)
{
 int b, c, d, e[4];

 for (b = 0; b<4; b++)
 {
  for (a = e; a<e + 4; a++)
  {
   if (*a<*(++a))
   {
    d = *a;
    *a = *(++a);
    *(++a) = d;
   }
  }
 }
}

为什么数没有改变


提问者:qq_羲和_3 2017-03-18 09:35

个回答

  • flowlsj
    2017-03-18 11:27:29
    已采纳

    内层循环初始 a = e,a已经不再指向传入时的位置,自然不会对原数组起到修改的作用。此外你在循环里额外使用了三次自增操作,应该会导致数组越界。