最适合网络开发者的网站
C 语言。W3Schools 英文版。初学者课程

尿素 西斯

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 语言区别于其他编程语言的一个特点,例如 PythonJava.

它们在 C 语言中很重要,因为它们允许我们操作计算机内存中的数据。这可以减少代码并提高性能。如果您熟悉列表、树和图形等数据结构,您应该知道指针对于实现这些数据结构特别有用。有时您甚至必须使用指针,例如,在使用 文件.

不过要小心;必须小心处理指针,因为它可能会损坏存储在其他内存地址的数据。


C 练习

通过练习测试自己

锻炼:

创建一个名为的指针变量 指针,指向 int 变量我的年龄:

int myAge = 43;
  = &myAge;