文章目录

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

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


通过 . 操作符操作 结构体 内存空间 , . 操作符 是 寻址操作 , 计算结构体 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 语言】结构体 ( 结构体变量内存操作 | 通过 “ . “ 操作符操作结构体内存空间 | 通过 “ -> “ 操作符操作结构体内存空间 )相关推荐

  1. C语言中结构化数据(变量,指针,数组,字符串,结构体和联合)的内存表示

    目录 结构化数据表示 一.内存地址: 二.全局变量和局部变量的内存布局 三.数据在内存中的表示 四.数组在内存中的表示 五.字符串在内存中的表示 六.结构和联合在内存中的表示 结构化数据表示 一.内存 ...

  2. 【C 语言】结构体 ( 结构体类型定义 | 结构体类型别名 | 声明结构体变量的三种方法 | 栈内存中声明结构体变量 | 定义隐式结构体时声明变量 | 定义普通结构体时声明变量 )

    文章目录 一.结构体类型定义 二.结构体类型别名 三.结构体类型变量声明 1.使用结构体类型 ( 别名 ) 声明变量 2. 定义隐式结构体时声明变量 3.定义普通结构体时声明变量 二.完整代码示例 一 ...

  3. C语言笔记含源码(变量、输入输出、分支、循环、函数、数组、指针、字符串、结构体)小总结

    文章目录 一.变量与输入输出 二.分支语句 三.循环 四.函数 五.数组 六.指针 七.字符串 八.结构体 一.变量与输入输出 定义变量需要:类型.变量名.变量值(可有可无) #include < ...

  4. 初识C语言(1)(2)(3)(4) C语言入门 保姆级教程 变量 常量 字符串 转义字符 操作符 关键字 字符串 指针 函数 结构体 数组 选择语句 循环语句

    一.如何写C语言代码 1.编译器 2.创建项目 3.创建源文件 4.写代码 5.编译+链接+运行 项目名字不要汉语,不要特殊字符,不要加空格,项目路径一般为你想要的路径 C语言中,一般创建.c源文件, ...

  5. c语言指针变量输出不了共用体,瘋子C语言札记(结构体/共用体/枚举篇)

    瘋子C语言笔记(结构体/共用体/枚举篇) (一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student ...

  6. C语言《认识结构体》---重点解析内存对齐

    文章目录 结构体 一.结构体概念 二.结构体声明 (1).特殊声明 三.结构体变量的定义和初始化 (1).定义初始化例子1 (2).定义初始化例子2: (3).结构嵌套 四.结构体自引用 (1). 结 ...

  7. 【C 语言】结构体 ( 结构体类型变量初始化 | 定义变量时进行初始化 | 定义隐式结构体时声明变量并初始化 | 定义普通结构体时声明变量并初始化 )

    文章目录 一.结构体类型变量初始化 1.定义变量时进行初始化 2.定义普通结构体时声明变量并初始化 3.定义隐式结构体时声明变量并初始化 二.完整代码示例 一.结构体类型变量初始化 1.定义变量时进行 ...

  8. new 一个结构体数组_C语言结构体到底占多少内存?简单!一文助你解决结构体内存问题...

    前言 本文主要介绍的是C/C++中 结构体的所占用内存问题做以分析,希望对于广大读者有一些帮助.在编写C语言一下程序的时候: struct data{int iNum;float fNum;long ...

  9. c语言2个字符串可以相互赋值吗,c语言结构体2之变量赋值于字符串

    #include #include struct dangdang { char email[]; char name[]; char addr[]; int num; int bugnum; cha ...

最新文章

  1. 服务器对搜索引擎有哪些影响,实录:网站换服务器后对搜索引擎的影响
  2. js1:对象的学习,构造函数,继承构造函数【使用教材:JavaScript深度剖析第2版】...
  3. 1过程流程图 3 apqp_如何绘制流程图?这里有3种绘制方法,既简单又高效!1分钟可学会...
  4. 深入学习Java8 Lambda (default method, lambda, function reference, java.util.function 包)
  5. Eclipse启动之一:外壳程序(百度空间迁移)
  6. 算法练习day15——190403(简介、求n!、汉诺塔、打印字符串的子序列、打印字符串的全排列、母牛生小牛、最小路径和、累加和是否达到给定值)
  7. python 回车字符_「答案」python每日一题20201107
  8. IBASE 不能被编辑
  9. like效率 regexp_Oracle 中like效率 正则表达式 浅析
  10. php四则运算出题器_php实现简单四则运算器
  11. Android桌面组件开发之实时文件夹(Live_Folders)
  12. 米勒罗宾素数判定(模板)
  13. 实用typescript_TypeScript 泛型使用2-常见的工具类型
  14. 在 CentOS 上安装 Docker 引擎
  15. python二元一次方程组用鸡兔同笼的思路来写编程_二元一次方程组的应用一鸡兔同笼问题...
  16. 轻松解决XMind文件配置错误(configuration area)
  17. BERT的优秀变体:ALBERT论文图解介绍
  18. RecyclerView(侧滑删除)和下载文件
  19. Android 源码分析
  20. 李永乐复习全书线性代数 第六章 二次型

热门文章

  1. 将一个数组划分为和差值最小的子数组
  2. 传智播客视频学习 ---- 字符串含义( C 语言中)
  3. 通过案例了解puppet创建虚拟资源解决资源冲突问题
  4. 数学之美 系列一 -- 统计语言模型
  5. 人的一生,有三件事情不能等
  6. Angular\Vue解决页面数据加载时出现{{message}}闪烁的情况
  7. 【WIN10】程序內文件讀取與保存
  8. 笔记:编写高质量代码 改善Java程序的151个建议
  9. 在linux下安装配置DNS服务器
  10. DataGridView的单元格控制只能输入数字