指针是什么?
在计算机中,所有的数据都存储在存储器里。 一般将存储器内的1个字节称为1个存储器单元,数据类型不同,占用的存储器单元的数量也不同。 例如,完整大小为4个单元,字符大小为1个单元等。 要正确访问这些内存单元,必须对每个内存单元进行编号。 可以从一个存储器单元的编号中准确地找到该存储器单元。 存储器单元的编号也称为地址。 根据存储器单元的编号和地址可以找到所需的存储器单元,因此通常也称为指针。
可以用简单的例子说明这些关系。
我们去银行取钱的时候,银行的工作人员会根据我们的账号去找我们的存款单,找到后在存款单上写下存款、取款的金额。 其中,账号是存款的指针,存款数是存款的内容。 对于存储器单元来说,单元的地址是指针,其中存储的数据才是该单元的内容。
什么是指针变量?
在c语言中,可以用称为指针变量的变量存储指针。 指针变量的值是存储单元的地址或称为存储单元的指针。 变量的指针是变量的地址。 存储变量地址的变量是指针变量。
访问变量的两种方法
通过变量名直接访问
在同一范围内,变量名是唯一的,不允许出现两个变量名相同的变量。 此变量名与变量的地址一一对应。 也可以理解为变量名是变量的地址。 这种通过变量名访问变量的方式称为直接访问。
通过指针变量进行间接访问
检索指针变量的值(从定义中可以看出,指针变量的值是某个变量的地址),然后根据该地址访问相应的变量。 这种访问方法称为间接访问。
如何显示指针变量
指针变量的定义有以下三种。
指针类型说明(基本类型);
指针变量标识符*;
指针变量名称;
在c语言中,使用*标记指针变量。 根据使用场合的不同,*表示的意思也不同。 请看以下代码:
入主(void ) )。
{
int a=10;
//定义指针变量p时使用*,*表示变量p时的指针变量
int * p=a;
//此时,使用*表示"正在指示",取出指针变量p指示的值,即a的值
printf(%d(n ),*p );
返回0;
}
为什么必须在指针变量中指定基类型?
指针变量存储地址,地址在内存中是唯一的,因此在同一时刻两个变量不能占用同一个地址。 那么,为什么要添加基类型呢? 到地址收款就不够了吗?
请记住,不同的数据类型占用的内存字节数和存储方法不同。 例如,int消耗4个字节,而char只消耗1个字节。 为了根据存储单元的长度和存储形式正确取出数据,需要知道数据类型。 例如,定义一个int类型的变量,假设它占用的存储单元为2000~2004,则其地址为2000,系统需要检索后面三个单元的数据,需要知道它是指向int类型的指针变量。
因此,可以得出结论,指针变量有两个方面:用存储单元编号表示的地址和指向存储单元的数据类型。
轻松使用指针变量
*为了取值,从指针变量中取出指针所指变量的值;
为了取地址符号,取出变量的地址;
查看代码:
入主(void ) )。
{
int a=10;
//获取变量a的地址,代入指针变量p
int *p=a;
//从指针变量p中取出a的值并分配给b
int b=*p;
返回0;
}