C++指针详略【2】
指针
指针,是C/C++语言中的一个重要概念及其特点。指针也就是内存地址,它允许你直接操作内存地址。指针可以用来访问和修改内存中的数据,实现动态内存分配,以及实现一些高级编程技术,比如函数指针、指针数组等。
在计算机中,所有的数据都是存放在存储器中的,不同的数据类型占有的内存空间的大小各不相同。内存是以字节为单位的连续编址空间,每一个字节单元对应着一个独一的编号,这个编号被称为内存单元的地址。比如:int 类型占 4 个字节,char 类型占 1 个字节等。系统在内存中,为变量分配存储空间的首个字节单元的地址,称之为该变量的地址。地址用来标识每一个存储单元,方便用户对存储单元中的数据进行正确的访问。在高级语言中地址形象地称为指针。
声明指针变量
1 . 我们可以声明一个指针变量用来专门存储一个值的内存地址。
2 . 指针变量是一个特殊的变量,只能用来存储指针类型的值
。
3 . 我们只需要在正常声明变量的基础上,在变量名前面加一个*
号即可,例如:
1 | // 创建指针变量 |
4 . 这样,我们就声明了一个用于存放整数类型的指针变量
。
赋值
指针是一个变量,可以存储一个对象的内存地址。
1 . 由于指针变量只能存储指针类型,也就是内存地址,所以我们要先获取到一个变量的内存地址。
2 . 我们只需要在赋值的时候,在前面加个&
符号。
3 . 例如:我们想将num的内存地址赋值给x,赋值的时候要在num前面加个&
符号。
1 | int num = 17; |
4 . 要注意的是:如果创建的整数型指针类型,那么只能存入整数型内存地址
。
基本操作
输出地址
1 . 输出地址:
1 | int num = 17; |
2 . 因为x
已经是一个指针类型了,所以可以直接放输出语句内
3 . 最终它会输出一个如0x61fe14
这样的地址,这是一个十六进制的地址,也就是num
的值所存储的内存地址。
3 . 当然了,如果我们再往x
前面再加一个*
号,那它输出的就是变量num的值,这就相当于负负得正的思维逻辑。
1 | cout << *x << endl; |
修改值
1 . 根据上面负负得正
的思维逻辑,我们在x
前面再加一个*
号,将它重新赋值为17,那么它将直接修改变量num值,结果输出为18。
1 | int num = 17; |