C 指针
创建指针
从上一章中我们了解到,我们可以使用引用运算符 & 获取变量的内存地址:
示例
int myAge = 43; // 一个整型变量
printf("%d", myAge); // 输出 myAge 的值 (43)
printf("%p", &myAge); // 输出 myAge 的内存地址 (0x7ffe5367e044)
亲自试一试 »
指针是一个变量,它将另一个变量的内存地址存储为其值。
指针变量
指向相同类型的数据类型(例如int),并使用*运算符创建。
您正在操作的变量的地址将被赋值给该指针:
示例
int myAge = 43; // 一个整型变量
int* ptr = &myAge; // 一个名为 ptr 的指针变量,用于存储 myAge 的地址。
// 输出 myAge 的值(43)
printf("%d", myAge);
// 输出 myAge 的内存地址 (0x7ffe5367e044)
printf("%p", &myAge);
// 使用指针 (0x7ffe5367e044) 输出 myAge 的内存地址
printf("%p", ptr);
亲自试一试 »
示例详解
创建一个名为 ptr 的指针变量,它指向一个 int 变量(myAge)。请注意,指针的类型必须与您正在操作的变量的类型匹配(在本例中为 int)。
使用 & 运算符存储 myAge 变量的内存地址,并将其赋值给指针。
现在,ptr 保存了 myAge 的内存地址的值。
解引用
在上面的例子中,我们使用指针变量来获取变量的内存地址(与& 引用运算符一起使用)。
您还可以使用*运算符(解引用运算符)来获取指针指向的变量的值:
示例
int myAge = 43; // 变量声明
int* ptr = &myAge; // 指针声明
// 参考:使用指针 (0x7ffe5367e044) 输出 myAge 的内存地址
printf("%p", ptr);
// Dereference:
Output the value of myAge with the pointer (43)
printf("%d", *ptr);
亲自试一试 »
请注意,这里的 * 符号可能会让人困惑,因为它在代码中有两个不同的作用:
- 当在声明中使用(
int* ptr)时,它会创建一个指针变量。 - 当未在声明中使用时,它充当解引用运算符。
实用知识:在 C 语言中,有两种声明指针变量的方法:
int* myNum;
int *myNum;
关于指针的说明
指针是 C 语言区别于其他编程语言(例如 Python 和 Java)的一大特色。
指针在 C 语言中至关重要,因为它们允许我们操作计算机内存中的数据。这可以减少代码量并提高性能。如果您熟悉列表、树和图等数据结构,您应该知道指针在实现这些结构时特别有用。有时您甚至必须使用指针,例如在处理 文件 和 内存管理 时。
但要小心;指针必须谨慎处理,因为可能会损坏存储在其他内存地址中的数据。

