【C 语言】结构体 ( 结构体变量之间的赋值 )

简介: 【C 语言】结构体 ( 结构体变量之间的赋值 )

文章目录

一、结构体变量之间的赋值

二、完整代码示例





一、结构体变量之间的赋值


声明结构体变量 s1 , 同时进行初始化操作 ;


 

// 声明结构体变量 , 同时进行初始化操作
    Student s1 = {"Tom", 18, 1};


声明结构体变量 s2 , 不进行初始化 ;


 

// 声明结构体变量 , 不进行初始化
    Student s2;


将结构体变量 s1 赋值给 结构体变量 s2 , 该赋值的过程是将 s1 结构体变量赋值给 s2 结构体变量 , 会为 s2 的每个 结构体成员 进行赋值 ; 将 s1 结构体的 成员 取出 并赋值给 s2 结构体 的 相应成员 ;


 

// 将结构体变量 s1 赋值给 结构体变量 s2
    s2 = s1;





二、完整代码示例


完整代码示例 :


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**
 * @brief The Student struct
 * 定义 结构体 数据类型 , 同时为该结构体类型声明 别名
 * 可以直接使用 别名 结构体变量名 声明结构体类型变量
 * 不需要在前面添加 struct 关键字
 */
typedef struct Student
{
    char name[5];
    int age;
    int id;
}Student;
/**
 * @brief main
 * @return
 */
int main()
{
    // 声明结构体变量 , 同时进行初始化操作
    Student s1 = {"Tom", 18, 1};
    // 声明结构体变量 , 不进行初始化
    Student s2;
    // 将结构体变量 s1 赋值给 结构体变量 s2
    s2 = s1;
    // 打印 s2 结构体的值
    printf("name = %s, age = %d, id = %d\n", s2.name, s2.age, s2.id);
    // 打印两个结构体变量的地址值 , 上述赋值不是地址赋值 , 而是实际的值之间进行的赋值
    printf("s1 address = %d, s2 address = %d\n", &s1, &s2);
    // 由上面的 s2 打印结果可知 , 将 s1 结构体变量赋值给 s2 结构体变量
    // 会为 s2 的每个 结构体成员 进行赋值
    // 将 s1 结构体的 成员 取出 并赋值给 s2 结构体 的 相应成员
    // 命令行不要退出
    system("pause");
    return 0;
}



执行结果 :


name = Tom, age = 18, id = 1
s1 address = 6422196, s2 address = 6422168
请按任意键继续. . .

image.png

目录
相关文章
|
18天前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
45 12
|
23天前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
109 14
|
27天前
|
存储 编译器 C语言
【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
124 10
|
27天前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
34 5
|
1月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
137 13
|
1月前
|
存储 数据建模 程序员
C 语言结构体 —— 数据封装的利器
C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
|
1月前
|
存储 编译器 数据处理
C 语言结构体与位域:高效数据组织与内存优化
C语言中的结构体与位域是实现高效数据组织和内存优化的重要工具。结构体允许将不同类型的数据组合成一个整体,而位域则进一步允许对结构体成员的位进行精细控制,以节省内存空间。两者结合使用,可在嵌入式系统等资源受限环境中发挥巨大作用。
63 11
|
1月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
60 4
|
2月前
|
存储 C语言
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型
|
3月前
|
存储 C语言
【C语言基础考研向】02 数据类型-常量-变量
本文介绍了编程中的基本概念,包括数据类型分类、常量与变量的定义及使用。首先概述了四大类数据类型:基本类型(整型、浮点、字符型)、构造类型(数组、结构体)、指针类型和空类型。接着阐述了常量与变量的区别及命名规则,并详细说明了整型、浮点型和字符型数据的特点与应用。最后总结了常见的易错点,如字符串与字符常量的区别及浮点数的默认输出格式。