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 语言结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )

梦开始的地方 —— C语言结构体详解

在C语言中.结构体变量之间可以相互赋值吗

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

C 语言结构体 ( 结构体深拷贝 )