| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 477 人关注过本帖
标题:[求助]新手问C语言问题
只看楼主 加入收藏
popwer
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2006-9-4
收藏
 问题点数:0 回复次数:3 
[求助]新手问C语言问题
#include<stdio.h>
sub(int *s,int y)
{static int t=3;
y=s[t];t-;
}
main()
{ int a[]={1,2,3,4},i,x=0;
for(i=0;i<4;i++)
{sub(a,x);printf("%d",x);}
printf("\n");
}
看不懂这个函数了 ,大家帮忙解释下啊 ,最主要是实参和形参对不上号了
还有啊 书上说这个输出的结果是0000 是不是在主函数上面那个参数后面加上
return(y) 就能叫输出结果变成4321啊 帮忙看下 谢谢了
搜索更多相关主题的帖子: C语言 
2006-09-04 21:55
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

输出0000是因为行参不会改变实参的值,所以x总是0;
int sub()
{
...
return(y);
}
这样将返回一个值给主函数接收,如果将这个值给x那结果就是4321

还有一点,static int t=3;静态局部变量只能有一次赋初值,而且这个变量的生命周期不会随着sub()的结束而消失,
所以t的值就是3 2 1 0,直到程序结束.


#include<stdio.h>
int sub(int *s,int y)
{

static int t=3;
y=s[t];t--;
return(y);
}
main()
{ int a[]={1,2,3,4},i,x=0;
for(i=0;i<4;i++)
{x=sub(a,x);printf("%d",x);}
printf("\n");
}


倚天照海花无数,流水高山心自知。
2006-09-04 22:09
popwer
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2006-9-4
收藏
得分:0 
谢谢了啊  叫你费劲打了这样多字  嘿嘿  送个礼物吧

神话自我开始,梦想由我延续
2006-09-05 01:20
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
呵呵,就当灌水啦

倚天照海花无数,流水高山心自知。
2006-09-05 12:48
快速回复:[求助]新手问C语言问题
数据加载中...
 
   



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

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