栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

指针——基础的理解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

指针——基础的理解

什么是指针呢?就是pointer,到底是啥意思嘞?
很直观的理解就是,你有一个房子,房子是有地址的(内存地址),房子里是有内容的(内存的值),而指针就是保存房子地址的一个变量,可以理解为是一种新的数据类型,例如整型的指针:int*,浮点型是float*等。
另外需要注意的是,指针的数据类型和普通整型、浮点型占用内存不太一样,在32位操作系统都是占用4个字节,在64位占8个字节。
还是不理解?请看下面这些代码:

int i = 666;
int* pi;
pi = &i;
int** ppi;
// ppi 可以保存的是 int* 类型的变量 pi 的地址:
ppi = π
cout << i << endl;//i内存里的值
cout << &i << endl;//i的内存地址
cout << pi << endl;//pi里面放的东西
cout << *pi << endl;//pi里面放的东西指向内存地址的值
cout << &pi << endl;//pi的内存地址
cout << ppi << endl;//ppi存的是pi的内存地址
cout << *ppi << endl;//pi里面放的东西

你猜会输出什么?能猜到吗?

如果你能猜对,那对指针的理解就有初步的认识了。
指针就是脱离于原来变量,重新创建一个新的内存,内存里存的是指向变量的地址:int* p=&a。

对于指针,还有空指针、野指针等
空指针:int* p=NULL主要是用来给创建的指针型变量初始化用的。
野指针:这是一种常见的错误:int* p=(int*)0x1234 以上编译不会报错,但是运行的时候会显示非法,为什么呢?因为好比你去酒店开房,却去没有定的房间,会发生什么事?当然是非法的了,嘿嘿~

学会以上内容以后,接下来就是const修饰指针的问题了,在黑马程序员上,也是分三个内容,常量指针、指针常量、既修饰指针又修饰常量
const就是叫常量,在指针前面就是常量指针,在指针后面就是指针常量
分别有以下特点:
1、常量指针:指针的指向可以改,指针指向的值不可以改

2、指针常量:const修饰常量:指针的指向不可以改,指针指向的值可以改

3、const既修饰指针、又修饰常量:指针的指向不可以改,指针指向的值也不可以改

这个怎么记呢?其实很简单,我们不用黑马的方法,那个反而会把我弄糊涂,我是这么记得:
常量指针,const修饰的是int,所以对应的变量a不可以变
指针常量,const修饰的是p,所以指针p的指向不可以变(就是p内存的值不能动
const既修饰指针、又修饰常量就好理解了

以上就是今天对指针内容的复习,明天见!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457265.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号