首页 理论教育 C++语言:指针变量的基本操作

C++语言:指针变量的基本操作

时间:2023-08-13 理论教育 版权反馈
【摘要】:例9-3利用数组输入4个自然数,使用指针变量输出。p相当于,前面增加了一个号,表示p是一个指向整型指针变量的指针,即二重指针。

C++语言:指针变量的基本操作

1.指针变量赋值

设p是指向整型变量的指针变量,a是整型变量。如果要把a的地址赋予p有下述两种方式:

(1)指针变量初始化

(2)赋值法。

请注意:

不能把数值赋给指针变量,“int∗p;p=100;”的赋值是错误的。

2.指针变量的运算

指针变量的值是内存地址,常用到两种运算:加和减。这两个运算通常是配合数组进行操作的。

例9-3 利用数组输入4个自然数,使用指针变量输出。

程序代码如下:

输入:

2019

输出:

2019

请注意:上面程序中的“p++”,不是p的值(地址)加1。由于a是int类型,所以是“跳过”一个整数的空间,到达下一个整数。

不难理解,对于int类型指针变量,

(1)“p--”是向前“跳过”一个整数的空间,到达前一个整数。

(2)“(p+2)”是指向后面第2个整数的地址。

3.无类型指针

当需要指针根据不同的情况指向不同类型的数据时,可以暂时定义一个无类型的指针,以后根据具体需要再用强制类型转换的方法明确它的类型。

定义无类型指针p的方法如下:

功能:说明p是一个void类型的指针,void表示指针指向的数据类型不确定。

例9-4 无类型指针示例。

程序代码如下:(www.xing528.com)

定义了无类型指针p,可以为它赋地址值。但是输出时必须明确p指向的空间所存放的数据类型。因为不同的类型数据占用的内存空间大小不同,存储的格式也不同。

C++中的sizeof(x)可以计算变量x所占的内存字节数。下面来试一试!

例9-5 测试不同类型变量占用的内存空间容量。

程序代码如下:

运行结果:

从测试的运行结果得知:一个字符型变量占内存空间为1B,一个整型变量占4B,一个短整型变量占2B,一个长整型变量占4B,一个双长整型变量占8B,一个双精度浮点型变量占8B,一个整型数组元素占4B。

如果将语句“int n[1];”改成“int n[100];”,运行结果是多少B?你能验证吗?

4.指向指针的指针

一个指针变量指向另一个指针类型数据,称为二重指针变量。二重指针变量p的定义方法如下:

已知“int∗p;”表示p是一个指向整型数据的指针变量。∗∗p相当于∗(∗p),前面增加了一个∗号,表示p是一个指向整型指针变量的指针,即二重指针。如图9-3所示为彼此的关系。

图9-3 关系示意

注意,虽然p1和p2都是指针变量,其值都是地址,但是下面的赋值语句是错误的:

因为p2只能指向另一个指针变量p1,而不能指向一个整型变量t,即一重指针与二重指针不可相互赋值。

引用一重指针变量的值,要用一个“∗”;引用二重指针变量的值,要用两个“∗”。前面的例子中,要引用t的值,可以用∗p2,也可以使用∗∗p1。

类似地,可以定义多重指针。如:int∗∗∗p,int∗∗∗∗p等。

例9-6 二重指针应用示例。

运行结果:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈