qq_羲和_3
2017-03-18 09:35
#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;
}
}
}
}
为什么数没有改变
内层循环初始 a = e,a已经不再指向传入时的位置,自然不会对原数组起到修改的作用。此外你在循环里额外使用了三次自增操作,应该会导致数组越界。
C语言入门
926249 学习 · 20798 问题
相似问题