函数和指针的问题
比如这个 递归二叉树#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *lchild;
struct node *rchild;
}BINTNODE;
typedef BINTNODE * BINTREE; /*把BINTNODE的指针类型命名为BINTREE*/ /*定义二叉链表指针类型*/
void createbintree(BINTNODE **t) /*这里为什么要二级指针*/
{
int a;
scanf("%d",&a);
if(a==0)
*t=NULL;
else
{
*t=(BINTNODE*)malloc(sizeof(BINTNODE));
(*t)->data=a;
createbintree(&(*t)->lchild);
createbintree(&(*t)->rchild);
}
}
void preorder(BINTREE T) /*而这里不用二级指针~?*/ /*先序遍历序列*/
{
if (T) /*如果二叉树非空*/
{
printf("%d ",T->data); /*访问根结点*/
preorder(T->lchild);
preorder(T->rchild);
}
}
error(char *message)
{
printf(stderr,"error:%s\n",message);
exit(1);
}
main() /*主函数*/
{ BINTREE t=NULL;
printf("\nPlease input nodes of BINTREE : ");
createbintree(&t); /*这里传的是地址 */
printf("ok!\nthe preorder is:");
preorder(t); /*那这里传的是啥~?*/
getch();
}