文章目录

  • 一、通过 " . " 操作符操作结构体内存空间
  • 二、通过 " -> " 操作符操作结构体内存空间
  • 三、代码示例

一、通过 " . " 操作符操作结构体内存空间


通过 .​ 操作符操作 结构体 内存空间 , .​ 操作符 是 寻址操作 , 计算结构体 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
请按任意键继续. . .

【C 语言】结构体 ( 结构体变量内存操作 | 通过 “ . “ 操作符操作结构体内存空间 | 通过 “ -> “ 操作符操作结构体内存空间 )_结构体