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;
}
  注意和指针区别:指针是要单独开辟内存空间来声明指针变量的,而引用不用。

  引用可以代替指针完成很多工作。

转载于:https://www.cnblogs.com/ysys/p/5689824.html

C++学习笔记(五)--指针、NULL、引用相关推荐

  1. 梓益C语言学习笔记之指针

    梓益C语言学习笔记之指针 一.32位平台下,地址是32位,所以指针变量占32位,共4个字节 二.内存单元的地址即为指针,存放指针的变量称为指针变量,故:"指针"是指地址,是常量,& ...

  2. Spring Boot 框架学习笔记(五)( SpringSecurity安全框架 )

    Spring Boot 框架学习笔记(五) SpringSecurity安全框架 概述 作用 开发示例: 1. 新建项目 2. 引入依赖 3. 编写`SecurityConfig`类,实现认证,授权, ...

  3. 华清远见fs4412开发板学习笔记(五)

    fs4412开发板学习笔记(五) 作业1: 输入10个整数,按从小到大的顺序输出(选择排序) 每轮排序在未排序的集合中找到(最小/最大),将找到的数与未排序的 第一个数交换位置. 5 4 3 2 1 ...

  4. Java之多线程学习笔记五 —— 多线程模拟龟兔赛跑

    Java之多线程学习笔记五 -- 多线程模拟龟兔赛跑 参考教程B站狂神https://www.bilibili.com/video/BV1V4411p7EF package pers.ylw.less ...

  5. muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor

    目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...

  6. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  7. Ethernet/IP 学习笔记五

    Ethernet/IP 学习笔记五 Accessing data within a device using a non-time critical message (an explicit mess ...

  8. StackExchange.Redis学习笔记(五) 发布和订阅

    StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...

  9. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

  10. 好程序员教程分析Vue学习笔记五

    好程序员教程分析Vue学习笔记五,上次我们学习了Vue的组件,这次我们来学习一下路由的使用.在Vue中,所谓的路由其实跟其他的框架中的路由的概念差不多,即指跳转的路径. 注意:在Vue中,要使用路由, ...

最新文章

  1. mysql commit 机制_1024MySQL事物提交机制
  2. 小时级部署,客户数上千,神策数据的私有化部署靠什么取胜?
  3. 腾讯AI Lab宣布将于9月底开源“Tencent ML-Images”项目
  4. 深入研究 Java Synchronize 和 Lock 的区别与用法
  5. 一文了解贪心算法和回溯算法在前端中的应用
  6. 『转』数据库的委托之类型分类处理
  7. 物联网-移远M26模块OpenCPU开发第1讲
  8. 诸事不顺--今日宜睡大觉
  9. 基于小波域的隐马尔可夫树模型的图像去噪方法
  10. 在Linux部署SSM项目
  11. 机器学习笔记(四)——正则化
  12. linux环境下如何安装DHCP服务器及示例
  13. Django Rest Framework框架
  14. 转载 Package CJK Error: Invalid character code错误
  15. 4、数据库逻辑结构设计阶段
  16. 江南大学计算机专业就业率,江南大学这些本科和硕士专业就业率100%!2019江大毕业生就业报告...
  17. 从scratch到python轻松学下载_STEAM教育-[少儿创客] 从Scratch到Python——python turtle-电路城论坛 - 电子工程师学习交流园地...
  18. 美丽田园在香港证券交易所ipo上市,一探美丽田园
  19. 【GD32开发】一、GD32F103 TIMER0 PWM死区时间计算
  20. skinsdog 狗网可直接取回CSGO开箱网站

热门文章

  1. PAT_B_1039_Java(20分)
  2. 欣赏多彩的计算机作品教案,五年级上信息技术教案-欣赏多彩的计算机作品长春版(三起).docx...
  3. 移动端h5 顶部菜单栏_HTML5 移动端上 动态固定菜单栏的问题
  4. Java show两个整数加减_怎么样用java编写界面实现两个数的加法运算
  5. kmeanssklearn实例_sklearn实践(一):kmeans聚类
  6. Git丢弃不要的修改
  7. 计算机视觉知识基础_我见你:计算机视觉基础知识
  8. opencv 检测几何图形_使用OpenCV + ConvNets检测几何形状
  9. 突发!央行确认支付宝3种违法违规行为,处罚18万元!
  10. mysql 统计本月的_mysql 查询当天、本周,本月,上一个月的数据