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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sort函数的用法

快速排序sort的用法&#xff1a;&#xff08;适用于int float double char 。。。&#xff09; 记得加头文件&#xff01; 记得加头文件&#xff01; 记得加头文件&#xff01; 头文件&#xff1a; #include <algorithm> using namespace std ; // 两行都要写 数组排…

crf与bitrate对照表

crf与bitrate对照表 (2011-06-21 17:45:59)一些关于crf的备忘&#xff1a; 1、相较于bitrate方式&#xff0c;cpu占用与内存占用均会下降&#xff1b; 2、锐化滤镜会让crf的码率上升&#xff1b; 3、vbv对crf依然有效&#xff1b; 4、crf18就接近无损&#xff0c;字幕组惯用20-…

秒杀多线程第三篇 原子操作 Interlocked系列函数

上一篇《多线程第一次亲密接触 CreateThread与_beginthreadex本质区别》中讲到一个多线程报数功能。为了描述方便和代码简洁起见&#xff0c;我们可以只输出最后的报数结果来观察程序是否运行出错。这也非常类似于统计一个网站每天有多少用户登录&#xff0c;每个用户登录用一个…

Vue 教程第九篇—— 动画和过度效果

过渡效果 SPA 中组件的切换有一种生硬的隐藏显示感觉&#xff0c;为了更好的用户体验&#xff0c;让组件切换时淡出淡入&#xff0c;Vue 提供了专门的组件 transition。 过滤效果应用场景 条件渲染 (使用 v-if)条件展示 (使用 v-show)动态组件组件根节点过渡状态 enter&#xf…

halcon create_ocr_class_svm 使用SVM分类器创建OCR分类器

目录create_ocr_class_svm&#xff08;算子&#xff09;描述参数create_ocr_class_svm&#xff08;算子&#xff09; create_ocr_class_svm - 使用支持随机向量机制创建OCR分类器。 create_ocr_class_svm&#xff08;:: WidthCharacter&#xff0c;HeightCharacter&#xff0…

码率跟视频质量有关系

码率跟视频质量有关系.首先要清楚, 相同的视频编码方式下, 码率越高肯定画面越清晰. 但是高到一定值, 再往上的画面改善程度就不明显了, 只会增大文件体积. 所以码率选的合适, 才可以保证清晰度又保持文件不会太大. 个人经验如果是h.264编码(当前最好的视频压缩编码方案), …

SQL 字符串分割表函数

1 --字符串分割表函数2 declare str varchar(1000)3 declare split varchar(10) 4 5 declare i int;6 declare count int;7 8 declare ChildStr varchar(1000);9 declare splitStr varchar(1000); 10 declare Index int; 11 12 declare table as table (rowId int,splitStr va…

语句:分支语句、switch case ——7月22日

语句的类型包括&#xff1a;声明语句、表达式语句、选择语句、循环语句、跳转语句、异常语句 1&#xff0e;声明语句引&#xff1a;入新的变量或常量。 变量声明可以选择为变量赋值。 在常量声明中必须赋值。 例如&#xff1a; int i 0;//声明变量i 并赋值&#xff0c;也可以不…

halcon write_ocr_trainf 将训练字符存储到文件中

目录write_ocr_trainf&#xff08;运算符&#xff09;描述参数write_ocr_trainf&#xff08;运算符&#xff09; write_ocr_trainf - 将训练字符存储到文件中。 write_ocr_trainf&#xff08;Character&#xff0c;Image :: Class&#xff0c;TrainingFile ? 描述 运算符w…

码率计算文章

http://bbs.dvbcn.com/showtopic-41431-1.html

PostgreSQL Oracle 兼容性之 - INDEX SKIP SCAN (递归查询变态优化) 非驱动列索引扫描优化...

标签 PostgreSQL , Oracle , index skip scan , 非驱动列条件 , 递归查询 , 子树 背景 对于输入条件在复合索引中为非驱动列的&#xff0c;如何高效的利用索引扫描&#xff1f; 在Oracle中可以使用index skip scan来实现这类CASE的高效扫描&#xff1a; INDEX跳跃扫描一般用在W…

如何确定镜头CCD靶面尺寸?

在组建机器视觉系统时&#xff0c;需要选用适合实际应用的产品。今天&#xff0c;中国机器视觉商城的培训课堂为您带来的是关于工业镜头CCD靶面尺寸的确定方法。 在选择镜头时&#xff0c;我们通常要注意一个原则&#xff1a;即小尺寸靶面的CCD可使用对应规格更大的镜头&#x…

lua去掉字符串中的UTF-8的BOM三个字节

废话不多说&#xff0c;还是先说点吧&#xff0c;项目中lua读取的text文件如果有BOM&#xff0c;客户端解析就会报错&#xff0c;所以我看了看&#xff0c;任务编辑器swGameTaskEditor 在写入文件的时候&#xff0c;也不知道为什么有的文件就是UTF-8BOM格式&#xff1b;但一般都…

JQuery对象与DOM对象的区别与转换

1.jQuery对象和DOM对象的区别 DOM对象&#xff0c;即是我们用传统的方法(javascript)获得的对象&#xff0c;jQuery对象即是用jQuery类库的选择器获得的对象; eg: var domObj document.getElementById("id"); //DOM对象var $obj $("#id"); //jQuery对象;…

halcon append_ocr_trainf 将字符添加到训练文件中

目录append_ocr_trainf&#xff08;算子&#xff09;描述参数append_ocr_trainf&#xff08;算子&#xff09; append_ocr_trainf - 将字符添加到训练文件中。 append_ocr_trainf&#xff08;Character&#xff0c;Image :: Class&#xff0c;TrainingFile ? 描述 运算符a…

CCD 尺寸

CCD&#xff08;包括CMOS感光元件&#xff09;的面积是按其矩形对角线英寸长度为指标的。这和定义电视屏幕尺寸类似。一英寸是25.4毫米。1/2.0英寸、1/1.8都是指CCD 对角线有多少分之一英寸长&#xff0c;分母小的其分数值就大&#xff0c;相应感光元件面积也大。 1/2.…

Quagga的安装碰到的问题

1.如果出现以下错误&#xff1a; vtysh: symbol lookup error: /usr/local/lib/libreadline.so.6: undefined symbol: UP 解决方法如下: 1.rootlocalhost:~ # cd /usr/local/lib 2.rootlocalhost:/usr/local/lib# ls -la libreadline* 3.rootlocalhost:/usr/local/lib# mkd…

X264电影压缩率画质

X264电影压缩率画质全对比&#xff1a; http://www.mov8.com/dvd/freetalk_show.asp?id29778

halcon read_ocr_trainf 从文件中读取训练字符并转换为图像

目录read_ocr_trainf&#xff08;算子&#xff09;描述参数read_ocr_trainf&#xff08;算子&#xff09; read_ocr_trainf - 从文件中读取训练字符并转换为图像。 read_ocr_trainf&#xff08;&#xff1a;Characters&#xff1a;TrainingFile&#xff1a;CharacterNames&am…

(十二)洞悉linux下的Netfilteramp;iptables:iptables命令行工具源码解析【下】

iptables用户空间和内核空间的交互 iptables目前已经支持IPv4和IPv6两个版本了&#xff0c;因此它在实现上也需要同时兼容这两个版本。iptables-1.4.0在这方面做了很好的设计&#xff0c;主要是由libiptc库来实现。libiptc是iptables control library的简称&#xff0c;是Netfi…