我尝试多次运行此代码,每次输出都相同,我没有得到,这样的代码有什么用?
#include<stdio.h>
#include<conio.h>
void increment(int,int, int);
int main()
{
int a[20],i;
clrscr();
printf("Enter array elements");
for(i=0;i<20;i++)
scanf("%d", &a[i]);
increment(a[0],a[5],a[2]);
printf("After passing array:\n");
for(i=0;i<20;i++)
printf("%d\t", a[i]);
getch();
return 0;
}
void increment(int x, int y, int z)
{
//int i;
x++;
y++;
z++;
//for(i=0;i<size;i++)
// x[i]++;
}
答案 0 :(得分:1)
为了有用,需要将要修改的值的地址传递给increment()
,而不是值本身:
改变这个:
void increment(int x, int y, int z)
{
//int i;
x++;
y++;
z++;
// for(i=0;i<size;i++)
// x[i]++;
}
对此:
void increment(int *x, int *y, int *z)
{
//int i;
(*x)++;
(*y)++;
(*z)++;
// for(i=0;i<size;i++)
// x[i]++;
}
然后改变这个:
increment(a[0],a[5],a[2]);
到此:
increment(&a[0],&a[5],&a[2]);