有关于c语言中指针的问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 19:46:16
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 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 <stdio.h>

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,