指针以及指针的分类
来源:互联网 发布:python zip函数 编辑:程序博客网 时间:2024/05/22 00:49
指针就是有指向的变量,它指向的是和存储指针本身类型相同的变量的空间,指针有多级指针,以及指针直接指向变量存放空间,二级指针指向的是存放同类型一级指针的空间,多级类推二级指向一级一样指向它的前一级指针存放空间,下面在介绍指针的分类之前我简单的通过画图展示一下指针和变量之间、指针和指针之间的指向关系:
在图片中可以看出有整型变量和整型一级和二级指针,一级指针指向了变量a,二级指针q指向了以及指针p,在图片里也不难看出指针里存放的是地址,这就是为什么通过指针能找到它指向的变量,而且还能更改它的值,下面一段代码体现:
#include<iostream>using namespace std;int main(){ int a = 10; int *p = &a; int **q = &p; cout<<"a = "<<a<<endl; cout<<"*p = "<<*p<<endl; cout<<"**q = "<<**q<<endl; cout<<"////////////通过一级指针改变////////////////"<<endl; *p = 2; cout<<"a = "<<a<<endl; cout<<"*p = "<<*p<<endl; cout<<"**q = "<<**q<<endl; cout<<"////////////通过二级指针改变////////////////"<<endl; **q = 8; cout<<"a = "<<a<<endl; cout<<"*p = "<<*p<<endl; cout<<"**q = "<<**q<<endl; return 0;}
这里的二级指针改变和一级是一样的,我们都知道p是取p所指向空间的值就是a,那么*q是不是取q所指向的空间的值p,那么我们把q指针(q)这样写我想能更好理解点,既然*q和p是相等的,那么(*q)是不是就是*p了,那么是不是通过**q同样可以指向a,只不过是中间借鉴了一个一级指针而已。
在经过上述阅读后我相信哪怕是没有学过指针的同学对指针应该有了认识,那么接下来我们来说说指针的分类,指针按照他们的属性可分为三类:
1. 原生指针
就是最普通的指针,定义类似: 类型 *变量名; 与之对比的是使用上有类似指针的功能 实际并不是指针。比如:迭代器 [一个类重载 *和->操作符 那么可以像指针一样使用 但是这种并不是原生的]
2. 泛型指针
第一种就是 void *指针 可以指向任意的数据结构 因此可以称为"泛型"。 第二种就是指具有指针特性的泛型数据结构 如:泛型迭代器和接下来要说的智能指针。
3. 智能指针
C++中没有自动回收内存的机制,因此出现了智能指针。 一般我们将一个指针封装到一个智能指针类中,该类中有一个引用计数器。 对指针的复制等操作会使引用计数+1,delete操作会使引用计数-1。 希望阅读完这篇博客对你学习指针有所帮助,指针是很多语言的基本技能,所以在学好指针必须了解指针的两值四方面,如果有人需要可以留言我有一本电子版资料讲的就是指针是我师傅自己写的,通俗易懂可以给你发过去。
阅读全文
0 0
- 指针以及指针的分类
- 指针的分类
- 指针以及指向指针的指针
- 数组的指针、指针数组以及指向指针的指针
- 数组的指针、指针数组以及指向指针的指针
- 数组的指针、指针数组以及指向指针的指针
- 数组的指针、指针数组以及指向指针的指针
- 数组指针和指针数组以及指针的指针
- 深入理解指针以及二级指针(指针的指针)
- 指针分类
- 指针的分类有哪些
- 指针的指针的理解以及应用
- 指针以及指针做参数的问题
- 常量指针、指针常量以及指向常量的指针常量
- 指针常量与常量指针以及typedef定义的指针
- 彻底了解指针数组,数组指针,指针的指针以及函数指针
- 各种指针分类总结 + 指针间的赋值关系
- 指针函数 与 函数指针 以及 指针的指针 与 指向指针数组的指针 的区别
- 一些讲深度学习的博客
- java学习 jstl中<c:url>标签的使用
- Database Configuration Assistant 创建实例时,ORA-01031:insufficient privileges
- 循环有序数组(旋转数组)的最小值
- The type org.springframework.core.NestedRuntimeException
- 指针以及指针的分类
- 使用python matlab 调整坐标轴刻度
- Mysql使用索引和不使用索引场景
- 设计模式之观察者模式
- MVC框架的EF删除
- 操作系统基本概念(转)
- 《Java编程思想-持有对象》
- Java8 新特性 函数式接口
- FFMPEG结构体分析:AVPacket