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;
}
注意和指针区别:指针是要单独开辟内存空间来声明指针变量的,而引用不用。
引用可以代替指针完成很多工作。
转载于:https://www.cnblogs.com/ysys/p/5689824.html
C++学习笔记(五)--指针、NULL、引用相关推荐
- 梓益C语言学习笔记之指针
梓益C语言学习笔记之指针 一.32位平台下,地址是32位,所以指针变量占32位,共4个字节 二.内存单元的地址即为指针,存放指针的变量称为指针变量,故:"指针"是指地址,是常量,& ...
- Spring Boot 框架学习笔记(五)( SpringSecurity安全框架 )
Spring Boot 框架学习笔记(五) SpringSecurity安全框架 概述 作用 开发示例: 1. 新建项目 2. 引入依赖 3. 编写`SecurityConfig`类,实现认证,授权, ...
- 华清远见fs4412开发板学习笔记(五)
fs4412开发板学习笔记(五) 作业1: 输入10个整数,按从小到大的顺序输出(选择排序) 每轮排序在未排序的集合中找到(最小/最大),将找到的数与未排序的 第一个数交换位置. 5 4 3 2 1 ...
- Java之多线程学习笔记五 —— 多线程模拟龟兔赛跑
Java之多线程学习笔记五 -- 多线程模拟龟兔赛跑 参考教程B站狂神https://www.bilibili.com/video/BV1V4411p7EF package pers.ylw.less ...
- muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor
目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...
- python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用
本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...
- Ethernet/IP 学习笔记五
Ethernet/IP 学习笔记五 Accessing data within a device using a non-time critical message (an explicit mess ...
- StackExchange.Redis学习笔记(五) 发布和订阅
StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...
- 吴恩达《机器学习》学习笔记五——逻辑回归
吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...
- 好程序员教程分析Vue学习笔记五
好程序员教程分析Vue学习笔记五,上次我们学习了Vue的组件,这次我们来学习一下路由的使用.在Vue中,所谓的路由其实跟其他的框架中的路由的概念差不多,即指跳转的路径. 注意:在Vue中,要使用路由, ...
最新文章
- mysql commit 机制_1024MySQL事物提交机制
- 小时级部署,客户数上千,神策数据的私有化部署靠什么取胜?
- 腾讯AI Lab宣布将于9月底开源“Tencent ML-Images”项目
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 一文了解贪心算法和回溯算法在前端中的应用
- 『转』数据库的委托之类型分类处理
- 物联网-移远M26模块OpenCPU开发第1讲
- 诸事不顺--今日宜睡大觉
- 基于小波域的隐马尔可夫树模型的图像去噪方法
- 在Linux部署SSM项目
- 机器学习笔记(四)——正则化
- linux环境下如何安装DHCP服务器及示例
- Django Rest Framework框架
- 转载 Package CJK Error: Invalid character code错误
- 4、数据库逻辑结构设计阶段
- 江南大学计算机专业就业率,江南大学这些本科和硕士专业就业率100%!2019江大毕业生就业报告...
- 从scratch到python轻松学下载_STEAM教育-[少儿创客] 从Scratch到Python——python turtle-电路城论坛 - 电子工程师学习交流园地...
- 美丽田园在香港证券交易所ipo上市,一探美丽田园
- 【GD32开发】一、GD32F103 TIMER0 PWM死区时间计算
- skinsdog 狗网可直接取回CSGO开箱网站
热门文章
- PAT_B_1039_Java(20分)
- 欣赏多彩的计算机作品教案,五年级上信息技术教案-欣赏多彩的计算机作品长春版(三起).docx...
- 移动端h5 顶部菜单栏_HTML5 移动端上 动态固定菜单栏的问题
- Java show两个整数加减_怎么样用java编写界面实现两个数的加法运算
- kmeanssklearn实例_sklearn实践(一):kmeans聚类
- Git丢弃不要的修改
- 计算机视觉知识基础_我见你:计算机视觉基础知识
- opencv 检测几何图形_使用OpenCV + ConvNets检测几何形状
- 突发!央行确认支付宝3种违法违规行为,处罚18万元!
- mysql 统计本月的_mysql 查询当天、本周,本月,上一个月的数据