注册 登录
编程论坛 C++教室

[求助]菜鸟的问题

flashmx2007 发布于 2007-04-02 06:56, 409 次点击
#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]怎么处理的?
这段函数到底是怎么样的`请达人指点指点`谢谢
1 回复
#2
踏魔狼2007-04-02 10:16
some(int b[], int size)是一个递归函数.
它会当去到条件不满足后返回.
重点也就是这个返回,因为是开始返回时才会调用printf,所以第一次调用printf的是
最后所调用some也就是10.
b[0]不是1吗?为什么它的值会变.
这是因为每一次调用some时&b[1]就把地址向后移一位.
1