C 指针
创建指针
从上一章中你了解到,我们可以得到 内存地址 带有引用运算符的变量&
:
例子
int myAge = 43; // 一个 int 变量
printf("%d", myAge); // 输出 myAge 的值(43)
printf("%p", &myAge); // 输出 myAge 的内存地址 (0x7ffe5367e044)
亲自尝试 »
A 指针是一个变量 商店 这内存地址 作为其值的另一个变量。
A 指针变量 点 到数据类型 (喜欢int
)相同类型,并且使用 *
操作员。
您正在使用的变量的地址被分配给指针:
例子
int myAge = 43; // 一个 int 变量
int* ptr = &myAge;// 一个名为 ptr 的指针变量,存储 myAge 的地址
// 输出 myAge 的值(43)
printf("%d\n", 我的年龄);
// 输出myAge的内存地址(0x7ffe5367e044)
printf("%p\n", &myAge);
// 用指针(0x7ffe5367e044)输出myAge的内存地址
printf("%p\n", ptr);
亲自尝试 »
示例解释
创建一个名为的指针变量 ptr
, 那 指着 一个int
多变的 (myAge
)。请注意,指针的类型必须与您正在使用的变量的类型相匹配(int
在我们的例子中)。
使用 &
运算符来存储内存地址myAge
变量,并将其分配给指针。
现在, ptr
持有的价值myAge
的内存地址。
取消引用
在上面的例子中,我们使用指针变量来获取变量的内存地址(与 &
参考 操作员)。
您还可以使用以下方法获取指针指向的变量的值 *
操作员(取消引用 操作员):
例子
int myAge = 43; //变量声明
int* ptr = &myAge; // 指针声明
// 参考:通过指针(0x7ffe5367e044)输出myAge的内存地址
printf("%p\n", ptr);
// 解除引用:用指针输出 myAge 的值(43)
printf("%d\n", *ptr);
亲自尝试 »
请注意 *
符号在这里可能会引起混淆,因为它在我们的代码中做了两件不同的事情:
- 在声明中使用时 (
int* ptr
),它会创建一个 指针变量. - 当不在声明中使用时,它充当 取消引用运算符.
很高兴知道: 在 C 语言中,有两种方法声明指针变量:
int*我的编号;
int *我的编号;
指针注释
指针是 C 语言区别于其他编程语言的一个特点,例如 Python 和Java.
它们在 C 语言中很重要,因为它们允许我们操作计算机内存中的数据。这可以减少代码并提高性能。如果您熟悉列表、树和图形等数据结构,您应该知道指针对于实现这些数据结构特别有用。有时您甚至必须使用指针,例如,在使用 文件.
不过要小心;必须小心处理指针,因为它可能会损坏存储在其他内存地址的数据。