C++指针基本概念(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33067361/article/details/72471488

指针的基本概念

指针就是一个特殊的变量,存储的是内存里的地址。

指针的类型

指针的类型即指针指向的数据的类型,目的在于让程序知道应该在内存中留多大的空间给指针,以及在取值操作的时候应该读取多少长度的连续内存空间。指针的类型并不影响指针的值。在实际应用中,去掉指针的名字就是指针的类型了。

指针所指向的类型

代表指针指向的内存区域存储的数据类型。从语法上看,去掉指针名字和名字左边的指针声明符 * 即可获得指针指向的类型。

指针的值

在32位机上,所有的指针类型变量占用内存字节数都是4,64位机则为8个字节。它不会随着指针的类型而改变。
指针的值就是指针本身存储的数值,这个值被编译器当做一个地址,而不是一般的数值。指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。所以当我们说一个指针的值是 xxx 就是说指针指向了一片以 xxx 为首地址的一片内存区域;同样的我们说一个指针指向了某块内存区域就是说这个指针的值是这块内存区域的首地址。

指针的算术运算

一个指针加减一个整数n,相当于加减n*sizeof(指针指向的类型)个字节。
两个指针不能进行加法运算,但是相同类型的指针可以进行减法运算,这个一般用在数组方面。

运算符 & 和 *

&是取地址符,&a的运算结果是一个指针,指针的类型是a的类型加 * ,指针所指向的类型是a的类型,指针所指向的地址是a的地址。
*p是指指针p所指的东西,他的类型是p所指向的类型,他所占用的地址就是p指向的地址。

数组和指针的关系(总是记不住)

数组名就是指针,数组名就是指针,数组名就是指针!重要的事情说三遍。指向的是数组的第一个单元。

sizeof的使用

先声明一个数组array

TYPE array[n];

sizeof(array)中,数组名代表数组本身,所以结果是整个数组的大小。
sizeof(*array)中,array代表指针,所以结果是数组单元的大小。
sizeof(array+n)中,array代表指针,array+n也是指针,指向数组的n号单元,所以结果是指针类型的大小。

猜你喜欢

转载自blog.csdn.net/qq_33067361/article/details/72471488