大多数人都知道,使用值传递对形参的更改不会影响实参,但是地址传递和引用传递却会,
最经典的例子莫过于交换两个数字。
但是,为什么在使用值传递的时候,传递一个地址给行参依然没有影响到实参了,是因为改变只在函数内部,没有返回给调用函数吗?
比如,下面关于二叉树的建立和遍历
#include <iostream>
using namespace std;
#define none '#'
typedef char TelemType;
typedef struct Binode{
TelemType data; // 数据域
struct Binode *left,*right; // 左右孩子指针
}Binode,* Bitree;
// 按先序输入建立二叉树
int createBiTree(Bitree& T){
TelemType ch;
scanf("%c",&ch);
if(ch == none ) T = NULL; // 用#表示空节点
else{
T = new Binode;
T->data = ch;
createBiTree(T->left); // 建立左子树
createBiTree(T->right); // 建立右子树
}
return 1;
}
// 按照先序遍历二叉树
int preOrder(Bitree T){
if(T){
printf("%c ",T->data); // 先遍历根
preOrder(T->left);
preOrder(T->right);
return 1;
} else return 0;
}
int main(){
Bitree T;
createBiTree(T);
preOrder(T);
return 0;
}
在建立二叉树createBitree去掉引用符号&,就建立不起来了?