可以使用间接运算符*
来访问指针所指向的变量的值。这个运算符也叫作引用运算符。
int number = 15;
int *pointer = &number;
int result = 0;
指针变量包含变量号的地址,可以在表达式中使用它来计算结果的新值:
result = *pointer + 5;
*pointer
将评估存储在指针中包含的地址的值。它是存储在变量number
中的值:15
,因此变量result
将设置为15 + 5
,即20
。
以下代码声明了一个变量和一个指针,并输出它们的地址和它们包含的值。
#include <stdio.h>
int main(void)
{
int number = 0; // int类型的变量初始化为0
int *pnumber = NULL; // 一个可以指向int类型的指针
number = 10;
printf("变量 number 的地址是: %p\n", &number); // 输出地址
printf("变量 number 的值是: %d\n\n", number); // 输出值
pnumber = &number; // 将 number 的地址存储在 pnumber 中
printf("pnumber 的地址是: %p\n", (void*)&pnumber); // 输出地址
printf("pnumber 的大小是: %zd 个字节.\n", sizeof(pnumber)); // 输出大小
printf("pnumber 的值是: %p\n", pnumber); // 输出值(一个地址)
printf("指向的值为: %d\n", *pnumber); // 地址的值
return 0;
}
执行上面示例代码,得到以下结果:
hema@yiibai:~/book$ gcc main.c
hema@yiibai:~/book$ ./a.out
变量 number 的地址是: 0x7fff273db11c
变量 number 的值是: 10
pnumber 的地址是: 0x7fff273db120
pnumber 的大小是: 8 个字节.
pnumber 的值是: 0x7fff273db11c
指向的值为: 10