| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1434 人关注过本帖
标题:不用形参指针,而用函数内部变量能否实现同样的功能
只看楼主 加入收藏
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
以下是引用unicorn在2006-9-24 11:44:10的发言:

如果变量只是想在递归函数体内使用就可以实现,例


void recursion(int a,int b)
{
a--;
b++;
if(n==0) return;
recursion(a,b);
printf(\"递归函数:%d\n\",b);// 虽然b是局部变量但每次调用,b的值都变化
}

为什么不用static呢?


淘宝杜琨
2006-09-24 11:46
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
不过用了static不方便赋值是倒是一个麻烦

淘宝杜琨
2006-09-24 11:49
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
为什么不用static呢?

这个树遍历是递归过程,函数体中的变量对于每次循环来讲应该相当于static变量,不用在加static限制

unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-09-24 11:50
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

比如这样...
void recursion()
{
static int a = 1;
static int b = 5;
int n = (a++) - (b--);
if(n==0) return;
printf("递归函数:a=%d,b=%d\n",a,b);// 虽然b是局部变量但每次调用,b的值都变化
recursion();
}


int main(void)
{
recursion();
}


淘宝杜琨
2006-09-24 11:52
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

可是楼主不想要你这样呀,楼主不是说想把那个m去掉么?


淘宝杜琨
2006-09-24 11:53
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
嗯 没看清楚
传进来的是m节点个数 对节点个数进行操作 最后节点个数还得有当前值...
看来不用指针 局部变量是实现不了了

unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-09-24 11:57
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
他的题目我都没看明白

value(p->leftchile);
value(p->rightchile);

??这样用也太...

淘宝杜琨
2006-09-24 12:03
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

终于领悟到楼主的意思了
楼主的愿望是可以用static实现的


淘宝杜琨
2006-09-24 12:06
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

#include "stdio.h"

typedef struct node
{
char data;
struct node* leftchile;
struct node* rightchile;
}Bitree;//定义二叉树结点类型


value(Bitree* p,int k)//k为要求的位置,m是指针,
{
static int m = 0; //你要m,我就给你m
if(m++==k)
{
printf("K的值:%d",p->data);
return;
}
value(p->leftchile,k);
value(p->rightchile,k);
}


淘宝杜琨
2006-09-24 12:08
明天不一样
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-8-31
收藏
得分:0 
版主就是版主,厉害,我怎么没有想到呢,真心的感谢版主了,万分感谢,谢谢!

可怜可怜我吧!小弟知识贫乏,快要饿死了,大哥大姐你们行行好,给点编程知识吧!我会永远记住你们的恩情。
2006-09-25 17:36
快速回复:不用形参指针,而用函数内部变量能否实现同样的功能
数据加载中...
 
   



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

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