snrg.net
当前位置:首页 >> voiD sum(int *A) {A[0]=A[1];} mAin() {int AA[10]={... >>

voiD sum(int *A) {A[0]=A[1];} mAin() {int AA[10]={...

6 void sum(int* a) { *a = *(a-1) + * (a+1); } 这样应该可以看懂的吧 , 数组作参数的时候,退化成指针

你sum函数中数组的下表怎么可能为负数呢,下标越界会是程序崩溃,而且,你传给sun的参数&a[2],会把数组前两个丢掉,之所以程序仍然可以运行,是因为a[-1]其实是原数组的第二个【传递的数组看似越界,其实元数组没有,因为内存中的东西还在】,也就是2,a[1]是原数组的4,所以结果为6. 但是这样所貌似有点投机的意思,可以用来理解数组,但是实际做题是最好如此,

第一次运行i=2,sum[&aa[2]]就把aa[2]当做首地址传给函数sum,然后sum函数中的a[0],a[1]分别代表了aa[2],aa[3],所以第一次完毕以后aa[2]=aa[3]=4;然而aa[0]并没有改变然后第二次运行i=1;同样将4传给了aa[1]=4;然后第三次i=0,将aa[0]赋值为4.所以结果应该是4希望对你有帮助

最终输出的是6分析:首先你得明白数组的地址是连续的,在调用子函数时传递的是地址,所以这里当传递a[2]的地址时,子函数中的数组就成了a[]={3,4,5,6,7,8,9,10},a[-1]的值就是现在这个首地址的上一个地址的值,也就是2,同样a[1]就是4,最后得到的a[0]就是6,回到主函数a[2]就是子函数中的a[0]的值

a[0] = a[1]; 就等价于 *a = *(a+1);

楼上的解释就是 for(i=2;i>=0;i--)sum(&aa[i]);i=2,将指针&aa[2]传递给函数 得到1 2 4 4 …… i=1 得到1 4 4 4 …… i=0 得到4 4 4 4 …… 搞定了吗?

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个的值换成数组第四个值

应该是选b和d.金属导体导电是自由电子的定向移动形成的,电流向下,自由电子向上运动,根据左手定则可知电子偏向右侧,在右侧聚集较多的电子,使b点的电势低于a点的电势,所以a选项错,b选项对.当电子所受的电场力和洛仑兹力平衡时电子停止偏转,有uab=bdv.,即d选正确.)

相关文档
zxqt.net | 5689.net | 5213.net | tbyh.net | qimiaodingzhi.net | 网站首页 | 网站地图
All rights reserved Powered by www.snrg.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com