我只能理解输出结果的第一个值 6 后面的没明白什么意思,希望懂得人告诉我一下!谢谢
#include <stdio.h>
void f(int *q)
{
int i=0;
for(;i<5; i++)
(*q)++;
}
main( )
{
int a[5]={1,2,3,4,5}, i;
f(a);
for(i=0;i<5; i++)
printf("%d,", a[i]);
}
程序输出结果: 6,2,3,4,5,
函数的参数 `f(int *p)` 接受数组指针,等价于 `f(int p[])`。传入 `f(a)` 这里传入的是数组 a 的指针。 数组 a 的指针则遵守数组指针的规则,指向数组的第一个元素。函数内部的循环,都执行了 `(*p)++` 这句代码,拆解开执行了两个步骤:
循环了5次,于是数组的第一个元素就自增了5次,从1变成了6. 数组的其他元素都没变化。因此,main 函数里循环打印数组时,就分别打印出了变为 6 的第一个元素,以及什么都没变的其他元素:6 2 3 4 5
void f(int *q) //实现结果将指针q指向的值+5
{
int i=0;
for(;i<5; i++) //循环五次
(*q)++; //将指针q指向的值+1
}
main( )
{
int a[5]={1,2,3,4,5}, i;
f(a); //将a[0]+5
for(i=0;i<5; i++)
printf("%d,", a[i]); //分别打印a[0],a[1],a[2],a[3],a[4]
}
因为a[0]通过f函数+5,变成6,其他不变所以a[]现在是等于{6,2,3,4,5},所以打印出来是6,2,3,4,5,
请你在这句话 (*q)++; 后面打印 (*q)的值, 就可以看到变化了。