标题:[求助]菜鸟的问题
只看楼主
flashmx2007
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-3-26
 问题点数:0 回复次数:1 
[求助]菜鸟的问题
#include<stdio.h>
#define SIZE 10
void some (int [],int);
main()
{
int a[SIZE]={1,2,3,4,5,6,7,8,9,10};
printf("\nthis:\n");
some(a,SIZE);
printf("\n\n");
return 0;
}
void some(int b [],int size)
{
if(size>0){
some(&b [1],size-1);
printf("%d ",b [0]);
}
}
后面这段实在看不懂```为什么输出结果是10到1,
&b[1] 不是表示第二个数 2的地址吗? b[0]不是1吗? 那为什么最后会是10到1 ?
some(&b [1],size-1) 在调用自己的时候&b[1]怎么处理的?
这段函数到底是怎么样的`请达人指点指点`谢谢
搜索更多相关主题的帖子: void int define 
2007-04-02 06:56
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
得分:0 
some(int b[], int size)是一个递归函数.
它会当去到条件不满足后返回.
重点也就是这个返回,因为是开始返回时才会调用printf,所以第一次调用printf的是
最后所调用some也就是10.
b[0]不是1吗?为什么它的值会变.
这是因为每一次调用some时&b[1]就把地址向后移一位.

=×&D o I p R e E n C g T l X&×=
2007-04-02 10:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-128552-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046992 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved