C++ 一些笔记
1、指针、引用和const
int i=;
int &a = i;
int *p ;
int *&r=p;//r是对指针的引用
r=&i;//实质上是将p指向i
*r=;//实质上是将i的值变为0;
a =;
引用实质上是对变量起个别名,它本身不是一个对象,只是与初始值绑在一起。因此他定义的时候必须初始化,且不能更换到其他对象,也不存在引用的引用。普通的“非常量引用“只能引用一个对象,不能引用一个常量,用const限定的“常量引用”可以引用一个常量,也可以引用一个普通变量。(这里“常量引用”只是一个对const的引用的简称,实际上不存在常量引用,因为引用不是一个对象)
int i =;
const int &a = i;
i = ;//这句话是对的。并且a的值也会跟着变了
a =//这句话是错的。
cout<<a;
指针本身是一个对象,因此可以复制和赋值,且可以指向不同的对象,指针定义的时候可以不初始化,也就是可以为空。可以有指向指针的指针。
存在指针的引用 ,不存在指向引用的指针。 指针是一个对象因此存在常量指针。如下:
const int *p = &i;//指向常量的指针
int const *p = &i;//效果上面一样
int *const q = &i;//常量指针 *p = ;//错误,p指向的是常量不能更改。
p = &c;//正确,p的地址可以换
*q = ;//正确
q = &c;//错误,p的地址不能更改。
2、指针形参,数组形参,引用形参
指针的行为跟其他非引用类型一样,当执行指针拷贝操作时,拷贝的是指针的值,拷贝之后两个指针不是一个指针。
void fun(int *p){
*p=;
p=;
}
int i =;
int *p = &i;
cout<<p<<endl<<*p<<endl;
fun(p);
cout<<i<<endl<<p<<endl<<*p;
输出结果

可以看出指针的值改变了,但是指针本身没有改变。
引用形参,其实就是一个引用,操作的还是其本身,因此在函数中改变其值,函数外也改变。因为都是自己。
数组形参,不允许拷贝数组,数组将转换成指针。我们实际上传递的是数组首元素的指针。
2、extern 和 static、const
C++ 一些笔记的更多相关文章
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
- springMVC学习笔记--知识点总结1
以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
随机推荐
- HDU 4941 Magical Forest(2014 Multi-University Training Contest 7)
思路:将行列离散化,那么就可以用vector 存下10W个点 ,对于交换操作 只需要将行列独立分开标记就行 . r[i] 表示第 i 行存的是 原先的哪行 c[j] 表示 第 j ...
- js中Array的一些扩展
IE下很多Array的方法都不被支持.每次都要写.所以记下来,以免忘记: 以下是对Array的一些扩展,在FF ,google 下是不需要加的. /** * 方法Array.filter(functi ...
- session的工作原理
asp中Session的工作原理:asp的Session是具有进程依赖性的.ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序.所以当inetinfo.exe进程崩溃 ...
- HOJ 1001: A+B; 1002: A+B+C
两道水题,用来熟悉 HOJ 的提交系统. 1001:输入两个整数 A, B (0 <= A,B <= 10),输出 A+B. #include <iostream> using ...
- 使用BCrypt算法加密存储登录密码用法及好处
//导入import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; /** *使用BCrypt算法加密存储登录密码 ...
- php __invoke 和 __autoload
当在对象后面添加()时候调用 __invoke <?php class Person { private $name; private $age; public function __const ...
- MYSQL 处理批量更新数据的一些经验。
首先,我们需要了解下MYSQL CASE EXPRESSION 语法. 手册传送门:http://dev.mysql.com/doc/refman/5.7/en/control-flow-functi ...
- JDBC操作步骤及数据库连接操作
http://blog.csdn.net/joywy/article/details/7731305
- java并发包:线程池 executorservice
1.newCachedThreadPool() -缓存型池子,先查看池中有没有以前建立的线程,如果有,就reuse.如果没有,就建一个新的线程加入池中 -缓存型池子通常用于执行一些生存期很短的异步型 ...
- 到入百度LSS framework Reason: image not found
dyld: Library not loaded: @rpath/VideoCore.framework/VideoCore Referenced from: /var/containers/Bund ...