C 语言结构体 ( 结构体变量内存操作 | 通过 “ . “ 操作符操作结构体内存空间 | 通过 “ -> “ 操作符操作结构体内存空间 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言结构体 ( 结构体变量内存操作 | 通过 “ . “ 操作符操作结构体内存空间 | 通过 “ -> “ 操作符操作结构体内存空间 )相关的知识,希望对你有一定的参考价值。
一、通过 " . " 操作符操作结构体内存空间
通过 .
操作符操作 结构体 内存空间 , .
操作符 是 寻址操作 , 计算结构体 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 语言结构体 ( 结构体变量内存操作 | 通过 “ . “ 操作符操作结构体内存空间 | 通过 “ -> “ 操作符操作结构体内存空间 )的主要内容,如果未能解决你的问题,请参考以下文章
C 语言结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )
C 语言结构体 ( 结构体类型定义 | 结构体类型别名 | 声明结构体变量的三种方法 | 栈内存中声明结构体变量 | 定义隐式结构体时声明变量 | 定义普通结构体时声明变量 )