C 语言指针

创建指针

从上一章中我们了解到,我们可以通过引用运算符获得变量的 内存地址 &:

实例
  1. #include <stdio.h>
  2. int main() {
  3. int myAge = 43;
  4. printf("%d\n", myAge);
  5. printf("%p\n", &myAge);
  6. return 0;
  7. }

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

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

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

实例
  1. #include <stdio.h>
  2. int main() {
  3. int myAge = 43; // An int variable
  4. int* ptr = &myAge; // A pointer variable, with the name ptr, that stores the address of myAge
  5. // Output the value of myAge (43)
  6. printf("%d\n", myAge);
  7. // Output the memory address of myAge (0x7ffe5367e044)
  8. printf("%p\n", &myAge);
  9. // Output the memory address of myAge with the pointer (0x7ffe5367e044)
  10. printf("%p\n", ptr);
  11. return 0;
  12. }
实例解释

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

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

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


不同之处

在上面的实例中,我们使用指针变量获取变量的内存地址(与&引用操作符一起使用)。

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

实例
  1. #include <stdio.h>
  2. int main() {
  3. int myAge = 43; // Variable declaration
  4. int* ptr = &myAge; // Pointer declaration
  5. // Reference: Output the memory address of myAge with the pointer (0x7ffe5367e044)
  6. printf("%p\n", ptr);
  7. // Dereference: Output the value of myAge with the pointer (43)
  8. printf("%d\n", *ptr);
  9. return 0;
  10. }

请注意,* 符号在这里可能会令人困惑,因为它在我们的代码中做了两件不同的事情:

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

我为什么要学习指针? 指针在 C 语言中很重要,因为它能让你操作计算机内存中的数据——这可以减少代码并提高性能。

提示:有三种方法可以声明指针变量,但第一种方法最常用:

  1. int* myNum; // 最常使用
  2. int *myNum;
  3. int * myNum;