6 2 4 3 5
f(a) 将 a[5]的首地址赋值给了 p
f(a)中 *q 就相当于a[0]
循环了5次 (*q)++,也就是 a[0]++五次,自然 a[0]=6了,而其他的元素都没有变化,因此会得到以上的结果
如果想的2 3 4 5 6的结果,程序应该改为
void f(int *q)
{int i=0;
for( ;i<5;i++) (*(q+i))++;
}
main()
{
int a[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++)
printf("%d ",a[i]);
getch();
}
int a[5]]={1、2、3、4、5};申明错误,应该为int a[5]={1,2,3,4,5};
f(a); 符号应该为英文状态下C语法要求很严的
for(i=0;i<5;i++)
printf(“%d,”,a[i]); 同上
}
结果为 6,2,3,4,5;
f(int *q) 函数使传过来的a[0]的值1循环5次(*q)++; 得6 。
楼还要好好学啊,,C是一门语法很严紧的语言,错一点都不行。。。
$cat test.c
#include
void f(int *q)
{int i=0;
for( ;i<5;i++) (*q)++;
}
int main()
{int a[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++)
printf("%d,",a[i]);
return 0;
}
$gcc test.c -o test
$./test
6,2,3,4,5,
6,2,3,4,5
#include
void f(int *q) //函数的参数为指针(地址)
{//(*q)++;*q为数组收元素的值,此题为1,位于for 循环内(*q)++; 执行5次,
for(int i=0 ;i<5;i++)
(*q)++;
}
void main()
{
int a[5]={1,2,3,4,5};
int i;
f(a);//调用函数,
for(i=0;i<5;i++)
printf("%d\n",a[i]);
}
6,2,3,4,5
在你的f()中,(*q)++表示把q这个地址所存的值加一。根据你的程序就是把数组首地址的值连续加5次,得到6.你如果想每个值都加1,应该写(*q++)++
很多语法错误,不过改过来后答案是62345