【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 语言】结构体 ( 结构体变量之间的赋值 )


下一篇:boost.xml_parser中文字符问题