C/C++填坑笔记——指针和引用
C/C++还是大一学的,两年多过去了忘了好多,坑一大堆
目录
指针
NULL空指针
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。
NULL 指针是一个定义在标准库中的值为零的常量。
内存地址 0 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。
如果所有未使用的指针都被赋予空值,同时避免使用空指针,就可以防止误用一个未初始化的指针。很多时候,未初始化的变量存有一些垃圾值,导致程序难以调试。
指针与数组
指针和数组是密切相关的。事实上,指针和数组在很多情况下是可以互换的。例如,一个指向数组开头的指针,可以通过使用指针的算术运算或数组索引来访问数组。
传递指针给函数
要在函数内改变这个值的时候,就用指针传递给函数,或者定义全局变量。当然全局变量用多了不好。
从函数返回指针
C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。
函数指针是一种特殊的指针,指向函数的入口
C++ 允许函数返回指针到局部变量、静态变量和动态内存分配。
引用
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
引用和指针
- 不存在空引用。引用必须连接到一块合法的内存。
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化。指针可以在任何时间被初始化。
把引用作为返回值
通过使用引用来替代指针,会使 C++ 程序更容易阅读和维护。C++ 函数可以返回一个引用,方式与返回一个指针类似。
当函数返回一个引用时,则返回一个指向返回值的隐式指针。
当返回一个引用时,要注意被引用的对象不能超出作用域。所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。
用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本。