第八章——地址和指针 第二节——给指针变量赋值
给指针变量赋地址值
指针变量可以通过不同的方式获得地址值,从而指向一个具体的对象。
指针变量获得地址值通常有以下几种办法:
通过取地址运算符&
&:表示求出变量的地址,如下:
1 | int k = 1 , *q , *p; |
说明
- 求地址运算符&只能用于变量和数组元素。不能用于常量、表达式和register变量。
q=&(k+1); // 这种是错误的
- &必须放在运算对象的左边,而且运算对象的基类型要与指针变量的基类型相同。
- 在scanf()函数中,输入的每个变量之前都必须加&,就是把终端读入的数据依次放到这些地址所代表的才能出单元之中。故有以下语句等价:
1
2
3
4
5
6
7//=======语句1=======//
scanf("%d",&a);
//=======语句2=======//
q = &k;
scanf("%d",q);
通过指针变量获得地址值
通过赋值运算把一个指针变量中的地址赋给另外一个指针变量,从而使两个指针指向同一个地址。
1 | int k = 1 , *p , *q; |

通过标准函数获得地址
通过调用库函数malloc和calloc在内存中开辟动态存储单元,并把所开辟的动态存储单元的地址赋给指针变量。
1 |
|
malloc值:100
calloc数组初始值:0 0 0
扩展后的数组:1 2 3 4
给指针变量赋空值
NULL是在stdio.h中定义的预定义符,代码值为0。
1 | p=NULL; |
执行该语句后,p就称为空指针。上述代码等价于如下:
1 | p=‘\0’; |
说明
- 这时p是具有一个确定的值--“空”,而不是指向地址为0的存储单元。
- 不能通过一个空指针去访问一个存储单元时,否则会得到一个出错信息。
考点
一个指针可以通过以下三种方式获得一个确定的地址,从而指向一个具体的对象:
通过求地址运算(&)
求地址运算符&只能用于变量和数组元素,不能用于表达式、常量或者被说明为register的变量。且&必须放在运算对象的左边,而且运算对象的类型必须与指针变量的基类型相同。通过指针变量获得地址值
通过标准函数获得地址值
- 标题: 第八章——地址和指针 第二节——给指针变量赋值
- 作者: 亓翎_Re-Tikara
- 创建于 : 2026-02-07 02:21:28
- 更新于 : 2026-02-10 02:48:46
- 链接: https://re-tikara.fun/Blog/posts/f4230736/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。