种了几个小时的树,竟然发现自己对指针引用却一窍不通,黯然神伤啊...
遇到的情况
一开始初始化一个root节点赋为NULL,然后是建树,当以先序遍历整棵树输出节点值时,发现树总是空的。开始以为内存没有分配出来,直接调了几小时,才发现是自己不懂得指针引用!这么基础都不懂啊,怎能不叫人心惊胆战……
查漏补缺
很清楚,在传值调用中,改变形参不会影响实参(形参是实参拷贝),如果形参是单指针,可以实实在在地影响实参的值(形参和实参指向同一块堆区)。
虽然单指针形参可以改变堆的值,但是有一样东西是改变不了的——指针的指向。
#include <iostream>
using namespace std;
void test(int *p){
p=new int;
*p=200;
}
int main() {
int *p=NULL;
test(p);
cout << *p << endl;
return 0;
}
我原本以为这样会输出200,但是我错了,程序运行后直接崩溃!虽然在外函数的函数体里面给p指针分配了堆区并赋了值,但是回到主函数之后,p依然是NULL!!!
而在把test函数的声明部分改为:
void test(int *&p);
运行结果就打印出了200。
小结:
如果使用单纯的指针,形参不能改变实参的指向。但如果是指针的引用就不同了,改变了形参的指向,实参的指向也会随之改变。
懂了这个语法再去种树,树理所当然就可以生成了。
分享到:
相关推荐
容器指针引用示例通常会涉及到如何在容器中使用指针和引用,以及它们之间的相互操作。下面我们将深入探讨这些主题。 首先,容器如vector或list通常用于存储对象的集合。当我们在容器中存储指针时,可以指向动态分配...
"指针引用和动态空间管理" 指针是计算机编程中的一种重要概念,它用于存储特定类型数据的地址。指针的类型就是指针所指向的数据类型。指针可以分为两种特殊的指针:void指针(无类型指针)和空指针(NULL)。 指针...
在编程领域,尤其是在C++这样的面向对象编程语言中,"抽象类指针引用"是一个重要的概念,涉及到类的设计、继承和多态性。抽象类通常包含至少一个纯虚函数,不能被实例化,而是作为基类来使用,为派生类提供接口。...
C语言教程第讲-指针引用类型声明完美版资料.ppt 本讲内容主要包括指针、引用、字符串处理、typedef声明类型、循环语句等知识点。 一、指针 指针是一种特殊的变量,它可以存储其他变量的内存地址。指针变量的声明...
### C语言中指针引用多维数组的教学实践 #### 一、指针在C语言中的重要性 C语言是一种基础且重要的编程语言,被众多院校作为程序设计的入门语言。然而,C语言也因其语法的灵活性和变化多端的特点而被认为难以掌握...
程序设计-通过指针引用多维数组 本文主要讲解了程序设计中多维数组的概念和实现,包括多维数组的定义、元素的地址计算、指针变量的使用等方面的内容。 在程序设计中,多维数组是一种常用的数据结构,用于存储和...
在C++编程语言中,多态性和指针引用是核心概念,它们对于理解和编写高效的代码至关重要。本资源包含了一份详实的学习材料,涵盖了这两大主题以及相关知识点,如虚函数、虚基类、抽象类和字符串操作。这些知识点在...
如果想要通过指针参数改变主调函数中的变量,需要使用指向指针的指针或指针引用。 引用传递参数则有所不同,虽然引用在函数内部也是一个局部变量,但它存储的是原始变量的地址。因此,对引用参数的任何操作都会直接...
此时,使用指针引用就显得尤为重要了。 例如,如果我们想要在函数`func1`中更新`pMyClass`所指向的对象,而不只是修改`pMyClass`本身的值,我们可以这样声明函数: ```cpp void func1(MYCLASS*& pMyClass) { ...
引用计数是智能指针常用的一种策略,用于跟踪对象被引用的次数。每当有一个新的智能指针指向该对象,引用计数就会增加;当智能指针析构或者重新赋值时,引用计数会减少。当引用计数变为零时,意味着没有智能指针再...
本文提出了一种基于指针分析的空指针引用故障测试方法。该方法的主要目的是有效检测程序中可能存在的空指针引用故障,这种故障是指针变量指向空地址单元Φ时,对指针进行访问(Access(p))所引发的问题。在软件开发...
面向对象程序设计-数组 指针 引用PPT课件.pptx
此外,使用智能指针(如`std::unique_ptr`和`std::shared_ptr`)也能帮助管理对象生命周期,防止空指针引用。 数据流分析是一种静态分析技术,用于在不实际执行程序的情况下,根据源代码推断变量的可能行为。在Java...
C++指针与引用的区别 指针和引用是C++语言中两种不同的概念,初学者容易把它们混淆一起。这两种概念都是地址的概念,但它们有很多不同的特点和应用场景。 相同点 1. 都是地址的概念;指针指向一块内存,它的内容...
在C++编程语言中,高阶指针和引用是两种重要的高级特性,它们极大地扩展了对内存和对象的操纵能力。本实验通过两个实例详细介绍了这两种概念及其在实际编程中的应用。 首先,我们来看第一个实例,它涉及到了二级...
然而,这也带来了对内存管理的直接责任,其中关键的概念包括指针、引用和动态内存分配。下面我们将详细解析这些知识点。 一、指针 指针是C和C++中的一个核心特性,它存储了变量在内存中的地址。指针变量本身也有一...
程序设计基础-字符串引用方式和指针变量 程序设计基础中,字符串是最基本的数据类型之一。在C语言中,字符串可以用字符数组或指针变量来存放和操作。下面将详细介绍字符串的引用方式和指针变量的使用。 1. 字符串...