C++学习笔记(五)--指针、NULL、引用
1. C++中已经定义了NULL为0:#define NULL 0
指针p可以指向空值NULL即 p = NULL;表示该指针变量不指向任何变量。
注意:指针未初始化与指针为NULL不同,
p = NULL;是有值的,为0;
而在定义时:int *p;这时候碎虽然未对p初始化,但不代表p无值,而是此时的值是一个无法预料的值,p可以指向任何一个 未指定的单元,这是非常危险的,所以在引用指针变量之前必须对其初始化。
任何指针变量都可以与NULL做 = 与 != 比较;
补充知识:
2.两个指针指向同一个数组可以比大小,指向前面元素的指针变量小于指向后面元素的指针变量。
3.对不同类型的指针赋值要强制转化:
int *p1;
char *p2;
float *p3
p1 = (int *)p2;
p2 = (char *)p3;
4.引用:为变量起一个别名,不适用于指针和数组。
int a;
int &b = a;/*表示b就是a,占用同一存储单元,只是名字不一样而已,即b具有a的地址,在声明引用时,必须同时初始化,b这个别名被使用后,不可在作为别的变量的名称。如 int &b = c; */
引用可以作为函数参数,当实参传递给形参时,就相当于为变量起了一个别名,在被调函数中,变量的别名的值别改变了,则函数外部对应的原变量也改变了,因为它们使用同一存储空间,使用同一地址,这弥补了C中函数参数只传值的不足(传指针也是传指针
的值)。
#include<iostream>
using namespace std;
int main(){
void swap( int & , int & );//&是引用,不是取地址
int i = 1, j = 2;
swap( i,j );
cout <<"i=" <<i <<endl <<"j=" <<j <<endl;
return 0;
}
void swap( int &a, int &b ){ /*调用到次函数时,实际上是把i的地址赋给a,j的地址赋给b,这时候a,b分别是i,j的别名,当函数内部的值改变了,自然而然的外部的值也改变了 ==》这就是 地址传递方式《==*/
int temp;
temp = a;
a = b;
b = temp;
}
注意和指针区别:指针是要单独开辟内存空间来声明指针变量的,而引用不用。
引用可以代替指针完成很多工作。
C++学习笔记(五)--指针、NULL、引用的更多相关文章
- Objective-C 学习笔记(五) 指针
Objective-C 指针 每一个变量是一个内存位置和每一个存储单元都有其定义的地址,可以使用符号(&)的运算符,它表示内存中的地址访问. a. 我们定义一个指针变量 b. 分配一个指针变量 ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
- muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor
目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...
- Java IO学习笔记五:BIO到NIO
作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- SQL反模式学习笔记14 关于Null值的使用
目标:辨别并使用Null值 反模式:将Null值作为普通的值,反之亦然 1.在表达式中使用Null: Null值与空字符串是不一样的,Null值参与任何的加.减.乘.除等其他运算,结果都是Null: ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
随机推荐
- Codeforces Round #430 (Div. 2) - D
题目链接:http://codeforces.com/contest/842/problem/D 题意:定义Mex为一个序列中最小的未出现的正整数,给定一个长度为n的序列,然后有m个询问,每个询问给定 ...
- bzoj4129 Haruna’s Breakfast 树上带修莫队+分块
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4129 题解 考虑没有修改的序列上的版本应该怎么做: 弱化的题目应该是这样的: 给定一个序列,每 ...
- IO初步
1.名称分隔符separator 建议:1.使用 / 表示路径:"D/java300/IO_study/aaa.png" 2.使用常量拼接:"D:"+File. ...
- 【SaltStack官方版】—— Events&Reactor系统—BEACONS
Events&Reactor系统—BEACONS Beacons let you use the Salt event system to monitor non-Salt processes ...
- iOS---如何获取手机的本地照片和相册
__weak ViewController *weakSelf = self; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIO ...
- Spring boot @Transactional
1.注解@Transactional 2.异常回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @Ov ...
- docker-compose简介
一.Docker-Compose简介 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排. Docker-Compose将所管理的容器分为三 ...
- <知识整理>2019清北学堂提高储备D4
今天主要讲一下数学的知识. 一.进制转换: 十进制到k进制:短除法:顺除至0,逆序取余. k进制转十进制:乘权相加. 常见进制:四进制(对应2位二进制).八进制(对应3位二进制).十六进制(对应4位二 ...
- Nginx 在 Linux 下安装与搭建集群
搭建集群图例 集群搭建图如下,为了简单一点,使用一个Nginx服务器+两个Tomcat服务器,省略数据库部分: 环境说明 Linux 为 CentOS 7.2 发行版 + Java jdk 1.8 + ...
- jQuery插件simplePagination的使用-踩坑记_03
jQuery插件simplePagination的使用 正在熟悉项目上的代码,新添加了一个需要,需要对表单进行分页,之前的代码中是有分页的代码的,看了老半天,也没看太明白.之前的项目比较久远,继续熟悉 ...