一般是以swap(int a,int b)引入的 参数传递时传值得,在函数中对参数的修改不对外界产生影响。
于是就引入了传指针和引用。
swap(int *a,int *b)传过来的是指向整型值的指针,这样就可以对他指向的内容操作。
一向以为自己对这些东西掌握得很好,今天写了一个avl树的程序,关于root在构造函数里面定义为root=NULL,在插入节点时,使用的是递归方法,希望把root和普通节点一样进行处理,即插入第一个元素时,为root分配空间。结果每次运行完毕,root总是没有被分配空间。形不成树结构
部分代码:
template<typename Type>
int AVLTree<Type>::insertAVL(TreeNode* tree, Type data, bool &taller)
{
if(!tree)
{
tree = (TreeNode*)malloc(sizeof(TreeNode));
tree->data=data;
tree->lchild=NULL;
tree->rchild=NULL;
tree->bf=EH;
taller = true;
}
else
{
if(data == tree->data)
{taller=false; return 0;}
if(data < tree->data)//左子树
{
if(!insertAVL(tree->lchild,data,taller))
return 0;//未插入,有相同元素
.......................................................
经过考虑,发现自己还是对传递参数没有把握好。
insertAVL(TreeNode* tree, Type data, bool &taller)
root=NULL, 也就是root=0x00000000;
作为参数传递tree=root,分配空间后
tree=0x123445678。对*tree结构进行初始化
但是当程序结束时,root还是为0x00000000,不会指向其他内存空间。
因为是传值。能改变是只是root指向内存快的内容,比较向int *const tree,是一个指针常量,指针不可改变,但是指向的内容可以改变~
如果希望改变指针内容(指针指向的地址),应该传递** 或者*&,我采用了引用~
template<typename Type>
int AVLTree<Type>::insertAVL(TreeNode* *tree, Type data, bool &taller)
template<typename Type>
int AVLTree<Type>::insertAVL(TreeNode*& tree, Type data, bool &taller)
分享到:
相关推荐
函数参数传递-传值.cpp
文档详细描述了C语言函数参数的传递,并举例说明,详细解读
C++中函数传递的详细说明,可以详细解释函数的传递方式,
C语言 函数调用 参数传递机制 探讨 txt
C语言函数调用三种方式 传值调用,引用调用和传地址调
比较详细透彻的讲述了C语言函数参数传递的基本知识点,以及基础的应用,让读者更容易学习和理解.
C语言函数调用三种方式传值调用,引用调用和传地址调[归类].pdf
主要给大家介绍了关于C语言中二维数组作为函数参数来传递的三种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C语言有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
C语言函数间参数传递机制的探讨
专门讲解函数参数的传递的。希望学学,有很大的帮助
c语言函数参数的传递和值返回,掌握参数传递和值返回是c语言的重中之重
结合汇编讲解了c语言汇中函数参数是如何传递,如何调用的
在学习c语言的过程中,会用到许多函数以实现特定的功能,久了这些函数的用法难免会忘记。这款C语言函数助手可以帮助你记录学过的函数,并可以把函数的功能及用法保存下来,以便忘记时查看。 C语言函数助手功能特色...
C语言中函数的参数传递.pdf
深入分析C语言中函数参数传递.pdf
C语言中函数参数传递问题探讨.pdf
我们将从本任务出发,较为系统的学习Python中函数的定义、调用、函数的形参定义、函数的参数传递以及匿名函数和生成器函数等内容,并掌握相关的配套案例。 任务 IQ智商测试 任务知识点 函数定于与调用 函数参数 匿名...
在C语言中,函数是一种重要的组织代码的方式,它能够将一段逻辑相关的代码块封装起来,方便重复使用和模块化开发。同时,参数传递是函数之间进行信息交流的重要方式。本文将介绍C语言函数和参数传递的基础知识,并...
C语言中函数参数传递教学模式探讨.pdf