返回

指针的基本概念和操作

见解分享

指针的基本概念

指针变量是一种可以存储其他变量地址的变量。指针变量的类型由它所指向的变量的类型决定。例如,指向整型变量的指针变量的类型为 int *。

指针变量的声明与其他变量类似,只是在变量名之前加上一个 * 号。例如,以下代码声明了一个指向整型变量的指针变量 ptr:

int *ptr;

指针的类型

指针的类型有很多种,包括:

  • 整型指针: 指向整型变量的指针变量。
  • 字符型指针: 指向字符型变量的指针变量。
  • 浮点型指针: 指向浮点型变量的指针变量。
  • 结构体指针: 指向结构体变量的指针变量。
  • 联合体指针: 指向联合体变量的指针变量。
  • 枚举类型指针: 指向枚举类型变量的指针变量。

指针的运算

指针变量可以进行以下运算:

  • 取值运算: 通过指针变量可以取到它所指向的变量的值。取值运算符为 *。例如,以下代码将指针变量 ptr 所指向的变量的值赋给变量 value:
int value = *ptr;
  • 赋值运算: 通过指针变量可以给它所指向的变量赋值。赋值运算符为 =。例如,以下代码将变量 value 的值赋给指针变量 ptr 所指向的变量:
*ptr = value;
  • 自增运算: 自增运算符为 ++。例如,以下代码将指针变量 ptr 所指向的地址增加 1:
ptr++;
  • 自减运算: 自减运算符为 --。例如,以下代码将指针变量 ptr 所指向的地址减少 1:
ptr--;
  • 加法运算: 加法运算符为 +。例如,以下代码将指针变量 ptr 所指向的地址加上 10:
ptr + 10;
  • 减法运算: 减法运算符为 -。例如,以下代码将指针变量 ptr 所指向的地址减去 10:
ptr - 10;
  • 比较运算: 比较运算符包括 ==、!=、>、>=、<、<=。例如,以下代码比较指针变量 ptr1 和 ptr2 所指向的地址是否相等:
if (ptr1 == ptr2) {
  // 两者相等
} else {
  // 两者不相等
}

指针数组

指针数组是指向数组的指针变量。指针数组的声明与其他数组类似,只是在数组名之前加上一个 * 号。例如,以下代码声明了一个指向整型数组的指针数组 ptr:

int *ptr[10];

指针数组可以存储多个数组的地址。例如,以下代码将三个数组的地址存储到指针数组 ptr 中:

int arr1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int arr2[10] = {11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
int arr3[10] = {21, 22, 23, 24, 25, 26, 27, 28, 29, 30};

ptr[0] = arr1;
ptr[1] = arr2;
ptr[2] = arr3;

通过指针数组,可以方便地访问数组中的元素。例如,以下代码访问指针数组 ptr 中第一个数组的第一个元素:

int value = *ptr[0][0];

指针数组还可以用于传递数组作为函数的参数。例如,以下代码将数组 arr 作为参数传递给函数 func:

void func(int *arr) {
  // ...
}

func(arr);

结语

指针是 C 语言中一种非常重要的数据类型,它可以存储变量的地址。通过使用指针,可以实现对数据的间接访问,提高程序的效率。指针在 C 语言中有很多应用,包括数组、字符串、结构体、链表等。