C语言的数组问题{a[0]=a{1};} main() {int a[10]={10,9,8,7,6,5,4,3,2,1}

#include<stdio.h>
void fun(int*a)
{a[0]=a{1};}
main()
{int a[10]={10,9,8,7,6,5,4,3,2,1},i;
for(i=2;i>=0;i--)fun(&a[i]);
for(i=0;i<10;i++)printf("%d",a[i]);
printf("\n");
}
结果是多少??求详解!!!!
我不大懂 当fun(&a[i])传进函数里面的时候,
到了 a[0]=a[1]这一句应该怎么用??

比如第一次i=2 &a[2]传进了fun函数 那值要怎么用??a[0]=a[1]表示什么意思?难道不是数组的第二个赋予第一个??

这个函数的功能是将输入的指针所指向的后一个变量赋给指针指向的变量。第一个for循环,i为2满足条件,将a[3]赋值给a[2],数组变为{10,9,7,7,6,5,4,3,2,1},同理第二次循环数组变为{10,7,7,7,6,5,4,3,2,1},第三次为{7,7,7,7,6,5,4,3,2,1},运行此次循环后退出第一个for循环。第二个for循环为输出数组的值,因此答案为7777654321。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-23
定义数组并赋值时c语言规定下标是这样的,a[n]中的n个元素应该是a[0]....a[n-1],
由此可见答案b中a[10]已经超过规定的范围,故不能表示数组a中的元素。答案a中因为指针p指向数组首地址,所以*p相当于a[0]这个元素
第2个回答  2011-09-10
fun(&a[i]);
传入的是一个值的地址,不是数组地址。此函数无法工作的追问

不是 我的意思是 &a[i]传入了 fun函数中厚 然后fun函数怎样工作的 就是这句a[0]=a[1]怎么运作??你知道此题如何解答么???

第3个回答  2011-09-10
a可理解为指针
首先i = 2,a[2]可以理解为指向数组的第三个值,传到函数里面a[0]自然就是外面的a[2]了
避免混淆形参和实参,可以将
void fun(int*a)
{a[0]=a[1];}
写成
void fun(int* p)
{p[0]=p[1];}
这样的意思就是p所指向的地方,即a[2]的值等于a[3]的值,其余i = 1、0都是一样的,将数组前3个的值换成数组第四个值追问

是不是说: 当第一次 i=2时 a[2]传入fun里面 然后即是 fun里面的a[0]就是8了??然后a[1]就是后面一个数7(即是数组里面的第四个数)???然后 i=1,a[0]就是外面的9,a[1]就是前面的一个数,本来该是8,但是上一步被换成了7,所以又是7,后面类推,是这样解析的么???
*p[0]就相当于指向的a[2],所以*p[1]就是指向a[3]???

追答

非常正确

本回答被提问者采纳
相似回答