种了几个小时的树,竟然发现自己对指针引用却一窍不通,黯然神伤啊...
遇到的情况
一开始初始化一个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。
小结:
如果使用单纯的指针,形参不能改变实参的指向。但如果是指针的引用就不同了,改变了形参的指向,实参的指向也会随之改变。
懂了这个语法再去种树,树理所当然就可以生成了。
分享到:
相关推荐
一种多敏感空指针引用错误的静态检测方法,白杨,王瑀屏,空指针引用错误是一种常见的、难以发现和避免的程序错误。针对该错误,结合传统静态分析方法和符号执行方法,提出一种过程内流敏
抽象类指针引用,如何使用抽象类指针,抽象类,指针,引用
学长自己写的,给我们讲解用的,应该比较简单易懂的了
C语言教程第讲-指针引用类型声明完美版资料.ppt
C语言中指针引用多维数组的教学实践.pdf
面向对象程序设计-数组 指针 引用PPT课件.pptx
通过例子解析指针引用及动态内存分配觉得有用看好再下
基于判断逻辑的空指针引用故障检测,王锐强,金大海,空指针引用故障是程序中非常常见的一类故障,国内外有大量的机构组织在研究如何检测这类故障,但是大多数的成果都有其自身的局限
一、指针的概念 1、内存由顺序排列的存储单元组成。 存储单元以字节为单位。 每个存储单元对应一个地址。 2、指针是存储特定类型数据的地址。 3、指针的类型就是指针所指向的数据类型
该demo主要展现智能指针和引用计数的实现过程,总共两个类,一个智能指针类,一个引用计数类,另外附一份执行步骤资料
提出了一种基于指针分析的空指针引用故障测试方法,分析了指针与内存地址之间的映射关系,并给出了故障测试算法。实验结果表明,该方法能够有效检测空指针引用故障。
空指针引用是程序中存在的比较常见的问题,由于它在程序中比较隐蔽,用动态方法测试耗时又耗力且很难达到全面覆盖的效果。该文介绍了一种针对空指针引用故障的静态分析方法,将空指针引用问题抽象为一类故障模型,并...
详细分析了指针与引用的区别,适合初学者了解
该文档给出两个关于c++高阶指针与引用的应用实例,是一个非常不错的C++学习资源!
一共10个简答,7个程序题,涵盖引用、指针、虚基类、虚函数、抽象类、字符串知识点。有答案
指针和引用的区别详细解答! 指针和引用的区别总结 1.从现象上看:指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变 2.从内存分配上看:程序为指针变量分配内存区域,而引用不分配内存区域...
指针在C程序中应用广泛,指针引用错误多发且危害严重。目前代表性的检测工具由于使用方便性、检测精度不足以及难以处理大规模程序等原因,并不能满足实用需求。本文提出一种新型的错误检测方法,该方法基于域敏感、...
C++实现 带引用计数的智能指针 VS2008工程文件
结构体版typedef struct LNode {//LinkList是个指针,当成类起了个别名bool InitList(LinkList &L) {boo