复合类型

el/2024/5/23 2:06:46

复合类型(compound type)是指基于其他类型定义的类型,C++中有几种复合类型,这里介绍引用和指针

 

一、引用

通俗的理解,引用就是为对象起了另外一个名字,引用类型引用(refer to)另外一种类型。通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名,引用在声明的时候必须被初始化

int i=1024;
int &d=i; //d指向i (d是i的另外一个名字) 
int &d2 // 错误,引用必须被初始化 

初始化变量时,初始值会被拷贝到新建的对象中。然而定义引用时,程序把应用和它的初始值对象绑定在一起,而不是将初始值拷贝给引用。一但初始化完成,引用将和它的初始值对象一直绑定在一起。因为无法另引用重新绑定一个对象,所以引用必须被初始化。

 

二、指针

指针是“指向”另外一种类型的复合类型。与引用类似,指针也实现了对其他对象的间接访问。但是指针不同于引用,

第一,指针本身就是一个对象,允许赋值和拷贝,而且在生命周期内可以先后指向不同的对象。

第二,指针无需在定义是赋值。和其他内置类型一样,在快的作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值。

 

获取对象的值

指针存放对象在内存中的地址,若想获得对象的地址,需要用取地址操作符&

int i=1024;
int *p; //p是指向整型变量的指针 
p=&i ;//将i的地址赋给指针p 

 

指针值

     指针值(即地址)属于下面的四种状态之一

  1. 指向一个对象
  2. 指向紧临对象所占空间的下一个位置
  3. 空指针, 意味着没有指向任意一个对象
  4. 无效指针

 

利用指针访问对象

int i=1024;
int *p=&i; //p获取i的地址
cout<<*p; // 访问p中的地址的值 

 

其他指针操作


int *p=0;//合法,空指针
if(p)//合法,如果p为空就返回false //..... 	
p1==p2//合法,比较两个指针是否相等 

 

void* 指针

void* 是一种特殊的指针类型,可以存放任意一个对象的地址,但是我们不知道地址中到底是一个什么类型的对象

所以并不能操作void*指针所指的对象,

以void*视角来看内存空间也仅仅是内存空间,没办法访问内存空间中所存的对象

 

 


http://www.ngui.cc/el/3419511.html

相关文章

落谷P1508 Likecloud-吃、吃、吃

题目背景 问世间&#xff0c;青春期为何物&#xff1f; 答曰&#xff1a;“甲亢&#xff0c;甲亢&#xff0c;再甲亢&#xff1b;挨饿&#xff0c;挨饿&#xff0c;再挨饿&#xff01;” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达&#xff0c;最近一…

洛谷P1604 B进制星球

题目背景 进制题目&#xff0c;而且还是个计算器~~ 题目描述 话说有一天&#xff0c;小Z乘坐宇宙飞船&#xff0c;飞到一个美丽的星球。因为历史的原因&#xff0c;科技在这个美丽的星球上并不很发达&#xff0c;星球上人们普遍采用B&#xff08;2<B<36&#xff09;进…

洛谷P2123 皇后游戏

题目背景 还记得 NOIP 2012 提高组 Day1 的国王游戏吗&#xff1f;时光飞逝&#xff0c;光阴荏苒&#xff0c;两年过去了。国王游戏早已过时&#xff0c;如今已被皇后游戏取代&#xff0c;请你来解决类似于国王游戏的另一个问题。 题目描述 皇后有 n 位大臣&#xff0c;每位…

落谷P1233 木棍加工

题目描述 一堆木头棍子共有n根&#xff0c;每根棍子的长度和宽度都是已知的。棍子可以被一台机器一个接一个地加工。机器处理一根棍子之前需要准备时间。准备时间是这样定义的&#xff1a; 第一根棍子的准备时间为1分钟&#xff1b; 如果刚处理完长度为L&#xff0c;宽度为W…

洛谷P1338 末日的传说

题目描述 只要是参加jsoi活动的同学一定都听说过Hanoi塔的传说&#xff1a;三根柱子上的金片每天被移动一次&#xff0c;当所有的金片都被移完之后&#xff0c;世界末日也就随之降临了。 在古老东方的幻想乡&#xff0c;人们都采用一种奇特的方式记录日期&#xff1a;他们用一…

洛谷P2258 子矩阵

题目描述 给出如下定义&#xff1a; 子矩阵&#xff1a;从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵&#xff08;保持行与列的相对顺序&#xff09;被称为原矩阵的一个子矩阵。 例如&#xff0c;下面左图中选取第22、44行和第22、44、55列交叉位置的元素得到一个…

spfa(求单源最短路)

一、简介 spfa &#xff1a;Shortest Path Faster Algorithm 单源最短路&#xff1a;给定一个带权值的有向图&#xff0c;给定图中的一个定点V&#xff0c;则V称为源&#xff0c;V能到达所有的顶点的最短距离称为单源最短路 二、图的存储方式 #include<bits/stdc.h> …

洛谷P3371 【模板】单源最短路径(弱化版)

题目背景 本题测试数据为随机数据&#xff0c;在考试中可能会出现构造数据让SPFA不通过&#xff0c;如有需要请移步 P4779。 题目描述 如题&#xff0c;给出一个有向图&#xff0c;请输出从某一点出发到所有点的最短路径长度。 输入输出格式 输入格式&#xff1a; 第一行包…

hdu1285确定比赛名次

确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 41540 Accepted Submission(s): 15994 Problem Description 有N个比赛队&#xff08;1<N<500&#xff09;&#xff0c;编号依次为1&#…

hdu1106排序

排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 80900 Accepted Submission(s): 24484 Problem Description 输入一行数字&#xff0c;如果我们把这行数字中的‘5’都看成空格&#xff0c;那么就得到一…