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

#include<stdio.h>voidfun(int*a){a[0]=a{1};}main(){inta[10]={10,9,8,7,6,5,4,3,2,1},i;f... #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]表示什么意思?难道不是数组的第二个赋予第一个??
展开
 我来答
miyanoasuna
2018-04-14
知道答主
回答量:5
采纳率:100%
帮助的人:4440
展开全部
这个函数的功能是将输入的指针所指向的后一个变量赋给指针指向的变量。第一个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。
税颖汉夏兰
2019-07-23 · TA获得超过1113个赞
知道小有建树答主
回答量:2485
采纳率:90%
帮助的人:12.9万
展开全部
定义数组并赋值时c语言规定下标是这样的,a[n]中的n个元素应该是a[0]....a[n-1],
由此可见答案b中a[10]已经超过规定的范围,故不能表示数组a中的元素。答案a中因为指针p指向数组首地址,所以*p相当于a[0]这个元素
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
123songmingzhu
2011-09-10 · TA获得超过309个赞
知道小有建树答主
回答量:436
采纳率:0%
帮助的人:266万
展开全部
fun(&a[i]);
传入的是一个值的地址,不是数组地址。此函数无法工作的
追问
不是 我的意思是 &a[i]传入了 fun函数中厚 然后fun函数怎样工作的 就是这句a[0]=a[1]怎么运作??你知道此题如何解答么???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terranlong
2011-09-10 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:66%
帮助的人:4079万
展开全部
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]???
追答
非常正确
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式