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之 ...
随机推荐
- Websocket 协议解析
WebSocket protocol 是HTML5一种新的协议.它是实现了浏览器与服务器全双工通信(full-duplex). 现 很多网站为了实现即时通讯,所用的技术都是轮询(po ...
- golang调用EXE
我是win7+go1.7+liteide,调用calc.exe package main import ( "os/exec" ) func main() { datapath : ...
- elasticsearch相关文章
http://blog.csdn.net/laigood12345/article/category/1113868
- Bpmx实施经验
Bpmx是一个较大的平台,直接发布的话会有内存问题,经查阅一些资料,java1.5没有解决好之前版本的历史问题,所以在垃圾处理gc上有很多配置需要手动完成,之后的版本同上. Bpmx平台自带的文档中部 ...
- post和get请求
get请求:不安全,参数在url地址中的参数的长度不能大于1024字节 post请求:安全,参数都是凤凰族昂在data里的,参数长度不限
- Ubuntu 14.10 创建虚拟网卡实现桥接网络
目标需求:在Ubuntu主机创建一张虚拟网卡,使得搭建在VirtualBox中的其他主机能借助虚拟网卡构建的局域网进行相互间的通讯 步骤一:准备工具包 安装 uml-utilities 以及 brid ...
- [Python学习笔记1]Python语言基础 数学运算符 字符串 列表
这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...
- Python中文问题(转)
在本文中,以'哈'来解释作示例解释所有的问题,“哈”的各种编码如下: 1. UNICODE (UTF8-16),C854: 2. UTF-8,E59388: 3. GBK,B9FE. 一.python ...
- 【转】深入理解JavaScript闭包闭包(closure) (closure)
一.什么是闭包?"官方"的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.相信很少有人能直接看懂这句话,因为他描述 ...
- Android开源控件PhotoView的使用
整体来说,它是一个更高级的ImageView,支持缩放,多点触控缩放,滚动和滑动,单机,长按等事件: PhotoView的git托管地址:https://github.com/chrisbanes/P ...