C/C++ 中 ->, ., &, *, ** 的用法详解

C/C++ 中 ->, ., &, *, ** 的用法详解

1. ->. 的区别

运算符 用法 说明
. 结构体变量.成员 用于访问结构体/类的普通变量的成员
-> 结构体指针->成员 用于访问指向结构体/类的指针的成员
struct Student {
    char name[20];
    int age;
};

Student s;
Student *p = &s;

// 使用 . 访问普通结构体变量成员
strcpy(s.name, "Alice");
s.age = 20;

// 使用 -> 访问结构体指针成员
strcpy(p->name, "Bob");
p->age = 21;

2. &* 的区别

运算符 用法 说明
& &变量 1. 在C中:取变量地址
2. 在C++中:还可表示引用
* *指针 1. 在声明时:表示指针类型
2. 在使用时:解引用,获取指针指向的值
int a = 10;
int *p = &a;  // p 存储 a 的地址
int b = *p;   // b 获取 p 指向的值,即 a 的值 10

// C++ 中的引用
int &ref = a;  // ref 是 a 的引用
ref = 20;      // 现在 a 的值变为 20

3. 二级指针 **

运算符 用法 说明
** int **pp 指向指针的指针,即地址的地址
int a = 1;
int *p = &a;    // p 存储 a 的地址,*p 得到 a 的值
int **q = &p;   // q 存储 p 的地址,**q 得到 a 的值

printf("%d\n", **q);  // 输出 1

二级指针的典型应用场景:

  1. 动态二维数组的分配
  2. 需要修改指针本身值的函数参数传递
  3. 字符串数组的处理

你可能感兴趣的:(单片机知识分享,c语言)