指针——基础的理解

什么是指针呢?就是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既修饰指针、又修饰常量就好理解了

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值