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

简介: 【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
请按任意键继续. . .

image.png


目录
相关文章
|
18天前
|
存储 编译器 程序员
【C语言】内存布局大揭秘 ! -《堆、栈和你从未听说过的内存角落》
在C语言中,内存布局是程序运行时非常重要的概念。内存布局直接影响程序的性能、稳定性和安全性。理解C程序的内存布局,有助于编写更高效和可靠的代码。本文将详细介绍C程序的内存布局,包括代码段、数据段、堆、栈等部分,并提供相关的示例和应用。
30 5
【C语言】内存布局大揭秘 ! -《堆、栈和你从未听说过的内存角落》
|
9天前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
39 12
|
18天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
48 6
|
18天前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
31 5
|
21天前
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
40 6
|
22天前
|
存储 算法 程序员
C 语言指针详解 —— 内存操控的魔法棒
《C 语言指针详解》深入浅出地讲解了指针的概念、使用方法及其在内存操作中的重要作用,被誉为程序员手中的“内存操控魔法棒”。本书适合C语言初学者及希望深化理解指针机制的开发者阅读。
|
20天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
49 1
|
存储 C语言
如何深入掌握C语言操作符及表达式求值(详解)(三)
本文章主要讲解点: ​​​​​​​各种操作符的介绍 表达式求值
如何深入掌握C语言操作符及表达式求值(详解)(三)
|
C语言
如何深入掌握C语言操作符及表达式求值(详解)(一)
本文章主要讲解点: ​​​​​​​各种操作符的介绍 表达式求值
如何深入掌握C语言操作符及表达式求值(详解)(一)
|
C语言 索引
如何深入掌握C语言操作符及表达式求值(详解)(二)
本文章主要讲解点: ​​​​​​​各种操作符的介绍 表达式求值