文章目录
一、通过 " . " 操作符操作结构体内存空间
二、通过 " -> " 操作符操作结构体内存空间
三、代码示例
一、通过 " . " 操作符操作结构体内存空间
通过 . 操作符操作 结构体 内存空间 , . 操作符 是 寻址操作 , 计算结构体 age 成员距离 距离 t3 变量的偏移量 ;
注意 : 只有 结构体 变量 才能使用 . 操作符 , 指向 结构体 的指针 , 不能使用该操作符 ;
代码示例 :
// 通过 . 操作符操作 结构体 内存空间 Teacher t3; // 为 name 结构体成员赋值 strcpy(t3.name, "Tom"); // . 操作符 是 寻址操作 // 计算 age 变量距离 距离 t3 变量的偏移量 t3.age = 18; t3.id = 2;
二、通过 " -> " 操作符操作结构体内存空间
通过 -> 操作符操作 结构体 内存空间 , -> 操作符 是 获取指针指向的内存数据 , 也是寻址操作 , 计算结构体 age 成员距离 距离 t3 变量的偏移量 ;
注意 : 只有 指向 结构体 变量 的指针 才能使用 -> 操作符 , 结构体变量 , 不能使用该操作符 ;
代码示例 :
// 通过 -> 操作符操作 结构体 内存空间 Teacher t4; Teacher *p = &t4; // 为 name 结构体成员赋值 strcpy(p->name, "Tom"); // -> 操作符 是 获取指针指向的内存数据 , 也是寻址操作 // 计算 age 变量距离 距离 t3 变量的偏移量 p->age = 18; p->id = 3;
三、代码示例
代码示例 :
#include <stdio.h> #include <stdlib.h> #include <string.h> /** * @brief The Teacher struct * 定义 结构体 数据类型 , 同时为该结构体类型声明 别名 * 可以直接使用 别名 结构体变量名 声明结构体类型变量 * 不需要在前面添加 struct 关键字 */ typedef struct Teacher { char name[20]; int age; int id; }Teacher; /** * @brief main * @return */ int main() { // I. 通过 . 操作符操作 结构体 内存空间 Teacher t3; // 为 name 结构体成员赋值 strcpy(t3.name, "Tom"); // . 操作符 是 寻址操作 // 计算 age 变量距离 距离 t3 变量的偏移量 t3.age = 18; t3.id = 2; // 打印 t3 结构体 printf("%s , %d , %d\n", t3.name, t3.age, t3.id); // II. 通过 -> 操作符操作 结构体 内存空间 Teacher t4; Teacher *p = &t4; // 为 name 结构体成员赋值 strcpy(p->name, "Tom"); // -> 操作符 是 获取指针指向的内存数据 , 也是寻址操作 // 计算 age 变量距离 距离 t3 变量的偏移量 p->age = 18; p->id = 3; // 打印 t4 结构体 printf("%s , %d , %d\n", t4.name, t4.age, t4.id); // 命令行不要退出 system("pause"); return 0; }
执行结果 :
Tom , 18 , 2 Tom , 18 , 3 请按任意键继续. . .