| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 716 人关注过本帖
标题:一个困惑我很久的问题!!!有关指针传址调用
只看楼主 加入收藏
lizjohn
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2010-10-28
结帖率:70.59%
收藏
已结贴  问题点数:20 回复次数:3 
一个困惑我很久的问题!!!有关指针传址调用
我不太明白,我们在用传址调用时什么时候带回指针只需带回数,什么时候需要带回指针:
比如: (1):栈
struct brack
{
    char*base;
    char*top;
    int stacksize;
};
void init(struct brack*m);
void push(struct brack*m,char c);
int pop(struct brack*m,char*e);
这是为什么就可以把整个栈带回?

(2):二叉树

typedef struct binode
{
 char data;
 struct binode *lchild,*rchild;
}binode,*bitree;                        //定义树结点结构
typedef struct queuenode
{
 bitree ch;
 struct queuenode *next;
}queuenode,*queueptr;                   //定义队列结点结构
typedef struct
{
 queueptr front;
 queueptr rear;
}linkqueue;                             //定义队列指针

//建树
int createbitree(bitree &T,int &sum)
{
 char ch;
 scanf("%c",&ch);
 if(ch==' ')
  T=NULL;
 else
 {
  if(!(T=(bitree)malloc(sizeof(binode))))
   return 0;
  T->data=ch;
  sum++;
  createbitree(T->lchild,sum);
  createbitree(T->rchild,sum);
 }
 return 1;
}
这里为什么又要返回数指针啊?

(3)还有我在看代码的时候,假如 子函数void(struct N*n),我怎么判断它是要返回值,还是它的整个参数就是这个指针而不需返回呢?
搜索更多相关主题的帖子: 指针 传址 困惑 
2010-11-20 16:33
cacker
该用户已被删除
收藏
得分:20 
提示: 作者被禁止或删除 内容自动屏蔽
2010-11-20 17:06
lizjohn
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2010-10-28
收藏
得分:0 
回复 2楼 cacker
你没看出(1)和(2)的区别吗???
比如: (1):栈
struct brack
{
    char*base;
    char*top;
    int stacksize;
};
void init(struct brack*m);这是个指针
void push(struct brack*m,char c);
int pop(struct brack*m,char*e);
这是为什么就可以把整个栈带回?

(2):二叉树

typedef struct binode
{
char data;
struct binode *lchild,*rchild;
}binode,*bitree;       *bitree已经是个指针                 //定义树结点结构
typedef struct queuenode
{
bitree ch;
struct queuenode *next;
}queuenode,*queueptr;                   //定义队列结点结构
typedef struct
{
queueptr front;
queueptr rear;
}linkqueue;                             //定义队列指针

//建树
int createbitree(bitree &T,int &sum)对bitree这个指针取了地址
{
char ch;
scanf("%c",&ch);
if(ch==' ')
  T=NULL;
else
{
  if(!(T=(bitree)malloc(sizeof(binode))))
   return 0;
  T->data=ch;
  sum++;
  createbitree(T->lchild,sum);
  createbitree(T->rchild,sum);
}
return 1;
}
我其实也不太明白他们各自返回的什么,但明显他们有区别,请指教!!!谢谢!!!
2010-11-20 17:17
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-11-21 19:42
快速回复:一个困惑我很久的问题!!!有关指针传址调用
数据加载中...
 
   



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

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