为了账号安全,请及时绑定邮箱和手机立即绑定

指针的调用

#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;
   }
  }
 }
}

为什么数没有改变


正在回答

1 回答

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

指针的调用

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信