易百教程

指针访问

可以使用间接运算符*来访问指针所指向的变量的值。这个运算符也叫作引用运算符。

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