C 指针
创建指针
您在上一个章节中了解到,可以使用引用运算符 &
来获取变量的内存地址。
示例
int myAge = 43; // 一个 int 变量
printf("%d", myAge); // 输出 myAge 的值 (43)
printf("%p", &myAge); // 输出 myAge 的内存地址 (0x7ffe5367e044)
自己动手试一试 »
指针是一个变量,它存储另一个变量的内存地址作为其值。
一个指针变量指向与它类型相同的数据类型(如 int
),并使用 *
运算符创建。
您正在处理的变量的地址被分配给指针。
示例
int myAge = 43; // 一个 int 变量
int* ptr = &myAge; // 一个指针变量,名为 ptr,它存储 myAge 的地址
// 输出 myAge 的值 (43)
printf("%d\n", myAge);
// 输出 myAge 的内存地址 (0x7ffe5367e044)
printf("%p\n", &myAge);
// 使用指针输出 myAge 的内存地址 (0x7ffe5367e044)
printf("%p\n", ptr);
自己动手试一试 »
示例说明
创建一个名为 ptr
的指针变量,它指向一个 int
变量(myAge
)。请注意,指针的类型必须与您正在处理的变量的类型(在本例中为 int
)相匹配。
使用 &
运算符来存储 myAge
变量的内存地址,并将其分配给指针。
现在,ptr
保存 myAge
内存地址的值。
解引用
在上面的示例中,我们使用指针变量来获取变量的内存地址(与 &
引用运算符一起使用)。
您还可以通过使用 *
运算符(解引用运算符)来获取指针指向的变量的值。
示例
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;
关于指针的注意事项
指针是 C 语言区别于其他编程语言(如 Python 和 Java)的一个重要特性。
它们在 C 语言中很重要,因为它们允许我们操作计算机内存中的数据。这可以减少代码量并提高性能。如果您熟悉列表、树和图等数据结构,您应该知道指针在实现这些结构时特别有用。有时您甚至必须使用指针,例如在使用 文件和 内存管理时。
但要小心;指针必须谨慎处理,因为有可能损坏存储在其他内存地址中的数据。