Skip to content

Latest commit

 

History

History
75 lines (48 loc) · 2.29 KB

c_pointers.md

File metadata and controls

75 lines (48 loc) · 2.29 KB

C 指针 Pointers

创建指针

您从上一章中了解到,我们可以使用引用运算符 & 获取变量的内存地址

int myAge = 43; // 一个 int 变量

printf("%d", myAge);  // 输出 myAge (43) 的值
printf("%p", &myAge); // 输出myAge的内存地址(0x7ffe5367e044)

在上面的示例中,&myAge 也称为指针

指针 是一个变量,它存储另一个变量的内存地址作为其值。

指针变量 指向同一类型的数据类型(如 int),并使用 * 运算符创建。 您正在使用的变量的地址分配给指针:

int myAge = 43;    // 一个 int 变量
int* ptr = &myAge; // 一个名为 ptr 的指针变量,用于存储 myAge 的地址

// 输出 myAge (43) 的值
printf("%d\n", myAge);

// 输出myAge的内存地址(0x7ffe5367e044)
printf("%p\n", \&myAge);

// 用指针(0x7ffe5367e044)输出myAge的内存地址
printf("%p\n", ptr);

示例说明

创建一个名为 ptr 的指针变量,它指向一个 int 变量(myAge)。 请注意,指针的类型必须与您正在使用的变量的类型相匹配。

使用 & 运算符存储 myAge 变量的内存地址,并将其分配给指针。

现在,ptr 保存了myAge 的内存地址的值。

取消引用

在上面的示例中,我们使用指针变量来获取变量的内存地址(与 & **reference ** 运算符一起使用)。

但是,您也可以使用 * 运算符(**dereference ** 运算符)获取指针指向的变量的值:

int myAge = 43;     // 变量声明
int* ptr = &myAge;  // 指针声明

// 参考:用指针输出 myAge 的内存地址(0x7ffe5367e044)
printf("%p\n", ptr);

// 取消引用:用指针输出 myAge 的值 (43)
printf("%d\n", *ptr);

请注意,* 符号在这里可能会造成混淆,因为它在我们的代码中做了两件不同的事情:

  • 在声明 (int* ptr) 中使用时,它会创建一个指针变量
  • 在声明中不使用时,它充当解引用运算符

我为什么要学习指针?

指针在 C 语言中很重要,因为它们使您能够操作计算机内存中的数据——这可以减少代码并提高性能。

三种声明指针变量的方式

int* myNum; // 最常被使用
int *myNum;
int * myNum;