程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 聲明-返回局部指針,typedef struct {}*p問題

聲明-返回局部指針,typedef struct {}*p問題

編輯:編程綜合問答
返回局部指針,typedef struct {}*p問題

#include
#define ElemType char
//節點聲明,數據域、左孩子指針、右孩子指針
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//先序建立二叉樹
BiTree CreateBiTree(){
char ch;
BiTree T;
scanf("%c",&ch);
if(ch=='#')T=NULL;
else{
T = (BiTree)malloc(sizeof(BiTNode));
T->data = ch;
T->lchild = CreateBiTree();
T->rchild = CreateBiTree();
}
return T;//返回根節點
}
//先序遍歷二叉樹
void PreOrderTraverse(BiTree T){
if(T){
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}

//中序遍歷
void InOrderTraverse(BiTree T){
if(T){
PreOrderTraverse(T->lchild);
printf("%c",T->data);
PreOrderTraverse(T->rchild);
}
}
//後序遍歷
void PostOrderTraverse(BiTree T){
if(T){
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
printf("%c",T->data);
}
}
void main(){
BiTree T;
BiTree *t1;
T = CreateBiTree();//建立
t1 = &T;
PreOrderTraverse(T);//輸出
getch();
}

上面的代碼中CreateTree()函數應該是返回了一個局部指針吧?這樣寫程序是不是不可靠?

最佳回答:


返回局部指針又不是可怕的事情,只要你分配了內存了的,這種做法在c代碼中很常見。你可以看到大量的開發包中有類似的做法。但是,一般來說,除了返回
該指針外,還得把該內存塊大小length也返回,然後,生存期管理交給調用方。由調用方負責釋放

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved