C++之引用和指针
作者:tongqingliu
转载请注明出处:http://www.cnblogs.com/liutongqing/p/7050431.html
C++之引用和指针
C++引用
引用的基本用法:
int a = 12;
int &b = a; // b指向a,b是a的引用,b是a的别名
下面看一个实例:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int val = 123;
int &refval = val; //refval是val的别名
cout << "val=" << val << endl;
cout << "refval=" << refval << endl;
refval = 0;
cout << "val=" << val << endl;
cout << "refval=" << refval << endl;
system("pause");
}
程序输出:
val=123
refval=123
val=0
refval=0
请按任意键继续. . .
引用其实就是给对象起一个别名,比如张明的别名是小明,那么你打张明和打小明都是一个意思,打的都是同一个人。
但是有几点需要注意:
- 引用必须初始化,
int &val;错。 - 引用类型的初始值必须是一个对象,而不能是个数
int &val = 1;错。 - 引用和引用的对象必须同一类型,
double a = 1.2; int &val = a;错。 - 引用不是对象,不能定义引用的引用,
int a = 1; int b = 2; int &c = a; int &c = b;错。
指针
和引用一样,指针可以间接访问其他对象。
指针的特点:
- 指针本身就是一个对象,可以赋值也可以拷贝,也可以先后指向不同的对象。
- 指针在定义时可以不赋值。
指针的基本用法;
int *ip1, *ip2;//声明指针,ip1和ip2都是指向int型对象的指针
double dp, *dp2;//dp是double型对象,dp2是指向double型对象的指针
int ival = 32;
int *p = &ival;//p是指向变量ival的指针,p存放变量ival的地址
上面最后一行,p存放变量ival的地址,*p表示ival的值(*是解引用符),&ival表示取ival的地址。
#include<iostream>
using namespace std;
int main()
{
int val = 123;
int *pval = &val;
cout << "val=" << val << endl;
cout << "pval=" << pval << endl;
cout << "&val=" << &val << endl;
cout << "*pval=" << *pval << endl;
system("pause");
}
程序运行结果:
val=123
pval=00A2FBE0
&val=00A2FBE0
*pval=123
请按任意键继续. . .
- 引用不是对象,没有实际地址,不能定义指向引用的指针。
- 指针类型必须和所指向对象的类型一样。
参考:
C++ primer 第五版
C++之引用和指针的更多相关文章
- c++中的引用与指针的区别
http://blog.csdn.net/lyd_253261362/article/details/4323691 c++中的引用与指针的区别 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存 ...
- nim的引用和指针
nim语言的引用和其他语言的指针有点相似 可以提供一种“多对一”的关系 这就意味着不同的引用可以指向同一个内存位置 nim区分可被追踪的引用和不可被追踪的引用 不可被追踪的引用又称为指针 可被追踪的引 ...
- C++中引用与指针的区别(详细介绍)
C++中引用与指针的区别(详细介绍) C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一 ...
- C++ 中引用与指针的区别
1.引用只是变量的一个别名,并不占用内存空间,而指针是一个变量,里面保存着被指向的变量在内存中的地址: 2 引用只能在定义时被初始化一次,之后不可变,而指针可变: 3 引用没有 const,指针有 c ...
- [ZZ]C++中,引用和指针的区别
(1) 引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针. 由于C++ 要求 reference 总是指向一个对象所以 re ...
- Java中到底有没有指针;同时注意引用和指针的区别
Java中引用的作用类似于指针,但是有区别:() (1) 指针必然指向一个内存地址,如果你定义的时候不指定,就会乱指(很可能造成安全隐患)但是引用定义出来后默认指向为空. (2) 指针可 ...
- java定义类 对象,引用,指针
java是根据面向对象编程,因此有类和对象的概念,类分为普通类与抽象类. 一.定义类 类由N个 构造器 成员变量 方法组成,可以不定义,也可以根据语法定义N个. [修饰符] class 类名{ 构 ...
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...
- C、C++中引用与指针的区别
1:引用的和指针在概念上的区别 引用是变量的别名,例如 int m; int &n=m; 引用作为一个别名.它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用 ...
- 浅谈C/C++引用和指针的联系和区别
为什么C/C++语言使用指针? 答案:①一方面,每一种编程语言都使用指针.不止C/C++使用指针. 每一种编程语言都使用指针.C++将指针暴露给了用户(程序员),而Java和C#等语言则将指针隐藏起来 ...
随机推荐
- XHR的对象及用法
function createXHR(){ //检测原生XHR对象是否存在,如果存在刚返回它的新实例: //如果不存在,则检测ActiveX对象; //如果两个都不存 ...
- PAT 1031 查验身份证(15)(C++&Python)
1031 查验身份证(15)(15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8, ...
- Linux CentOS 7 下 Apache Tomcat 7 安装与配置
前言 记录一下Linux CentOS 7安装Tomcat7的完整步骤. 下载 首先需要下载tomcat7的安装文件,地址如下: http://mirror.bit.edu.cn/apache/tom ...
- Python.tornado.2.tornado.options
记录Tornado-4.0.2源码的阅读,学习,分析 options.py 1. imports 部分 1.1 __future__ from __future__ import absolute_i ...
- PyTorch 1.0 发布,JIT、全新的分布式库、C++ 前端
Python 张量与动态神经网络 PyTorch 1.0 发布了. 此版本的主要亮点包括 JIT 编译.全新并且更快的分布式库与 C++ 前端等. JIT 编译器 JIT(Just-In-Time)是 ...
- NC 5的开发环境起不了客户端
5的开发环境,中间件启动无异常,但是在起客户端时报错,连中间件也关闭了. 添加图中两个jdk下的包
- Python GUI中 text框里实时输出
首先GUI中不同函数的局部变量的问题. 发现不同button定义的函数得到的变量无法通用. 通过global 函数内的变量可以解决这个问题 def openfiles2(): global s2fna ...
- abp项目中无法使用HttpContext.Current.Session[""]的问题
web项目Global.asax.cs中加入如下代码 public override void Init() { this.PostAuthenticateRequest += (sender, e) ...
- Java SE EE ME用处
Java SE: 又称J2SE,开发部署桌面应用程序: Java EE:又称J2EE,开发网站 Java ME:是做手机APP开发 EE在SE基础上构建,提供web服务.组件模型.管理和通信API
- 校园网ipv6连接问题
没有ipv6的信号:只需要进入网络适配器里面先禁用再启用即可.