指针的概念

指针的概念

我们知道,"int a = 3;"就表示一个整形变量a,并把它的值初始化为3。那么,系统就在内存的某个区域开辟4字节的连续单元存放 a。对a的操作就是对该区域的存储操作。但是,具体哪4个单元,我们却并不关心。内存单元的位置(编号)就叫"地址",可以通过取地址操作符"&"获得a的起始地址(首个存储单元的地址):&a。

其实指针就像其他变量一样,所不同的是一般的变量包含的是实际的数据,而指针变量存放的是一个内存地址,就好像一个指示器,它告诉程序在内存的哪块区域可以找到数据。

指针的定义和使用

指针变量的定义格式为

数据类型 *指针变量;

例如,"int *p = NULL;"表示定义了一个指针变量p,p存放的是一个内存地址,这个区域存放的是一个整数。初始化为NULL(如果定义都是全局指针变量,则默认就是,可以省略),表示空地址(相当于整形变量初始化为0)。

可以通过复制语句给指针变量复制。例如,"p = &a;"表示把变量a的内存地址赋值给p。所以可以通过p间接操作a。这时需要用到指针的操作符"",即"p"等价于a。

  1. 普通变量定义
    int a = 3;

    定义了变量 a,是 int 类型的,值为 3。内存中有一块内存空间是放 a 的值的,对a的存取操作就是直接到这个内存空间存取。内存空间的位置叫地址,存放 3 的地址可以用取地址操作符 “&” 对 a 运算得到:&a。
  2. 指针变量定义
    int *p = NULL;

    定义了一个指针变量 p ,p指向一个内存空间,里面存放的是一个内存地址。现在赋值为NULL(其实就是0,表示特殊的空地址)。
  3. 给指针变量p赋值
    p = &a;

    即把a变量的内存空间地址(比如:XXX)给了p。显然,直接对 p 存取,操作的是地址。通过这个地址间接地操作,才是整数3。p的间接操作要求是用指针操作符“*”,即 *p的值才是3。

说明
样例
指针定义:
存储类型* 指针变量名;

int a = 10;
int *p;

取地址运算符:
&

p = &a;

间接运算符:
*

*p = 20;

指针变量直接存取的是内存地址

cout<<p;

结果可能是:0x4097ce
间接存取的是才是存储类型的值

cout<<*p;

结果是:20

posted @ 2022-10-14 13:49  程易。  阅读(405)  评论(0)    收藏  举报