2024.1.2C语言 结构

一.结构的定义

1.概念

在C语言中,结构是一种用户自定义的数据类型,它允许您将多个不同类型的数据组合成一个单一的数据类型,如

struct student {int num;//学号char name[10];//姓名int computer, english, math;//3门课程成绩double average;//个人平均成绩
};//一定一定要记得加;

包含多种数据类型,可看出结构是C语言中一种新的构造数据类型,它能把有内在联系的不同数据类型汇聚成一个整体,使他们相互关联;同时,结构又是一个变量的集合,可以对其成员单独操作(同基本数据类型操作).

2.定义

struct  结构名{//结构类型名

        类型名 结构成员名1;

        类型名 结构成员名2;//结构分量

                        ...

        类型名 结构成员名n;

};//看做一条语句,结束要加;

struct为关键字,后自行命名一个结构名(合法标识符)

3.结构的嵌套定义

一个大的实体包含多个成员,每个成员又可能包含更小的成员,这样就需要结构的嵌套

struct address {//定义地址结构char city[10];char street[20];int code;int zip;
};
struct student {int num;char name[10];struct address addr;//定义通信地址成员int computer, english, math;double average;
};

结构类型 struct student的成员变量addr被定义成结构类型struct address,而struct address又包含了4个成员,即一个结构的成员被定义成了另一个结构类型.

二.结构变量的定义和初始化

同基本数据类型一样,需要定义结构类型的变量才能使用.

如:struct student stu,max;定义了结构变量 stu,max;数据类型都为struct student

 1.定义
(1)单独定义

先定义一个结构类型,在定义这种类型的变量

struct Student {  char name[50];  int age;  float score;  
};  struct Student s1, s2;
(2)混过定义

定义结构类型的同时定义结构变量

struct Student {  char name[50];  int age;  float score;  
} s1, s2;
2.结构变量的使用

利用结构成员操作符"."来引用结构成员

结构变量名.结构成员名,如stu.num  stu.name

在C语言中,对结构成员的使用方法与同类型的变量完全相同

如:stu.num=100;strcpy(stu.name,"zhang");

对嵌套结构成员的引用方法和一般成员的引用方法类似

#include <stdio.h>  struct Inner {  int inner_data;  
};  struct OuterStruct {  int outer_data;  struct Inner inner; // 定义嵌套结构成员  并给被嵌套的结构命名为 inner
};  int main() {  struct OuterStruct outer;  //给这个嵌套结构命名为outerouter.outer_data = 10;  //对结构outer中的outer_data用.操作outer.inner.inner_data = 20;  //对结构outer中的结构inner操作,故用两次.printf("outer_data: %d\n", outer.outer_data);  printf("inner_data: %d\n", outer.inner.inner_data);  return 0;  
}
3.结构变量的整体赋值

如果两个结构变量具有相同的类型,则允许将一个结构变量的值直接赋给另一个.赋值时一一对应.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《编程之光:解密ECMAScript与JavaScript的微妙关系》

目录 1. ECMAScript&#xff1a;光芒背后的规范2. JavaScript&#xff1a;语言的真实承载者3. 为何关系微妙&#xff1f;4. 编程之光的启示结尾&#xff1a; 标题&#xff1a;《编程之光&#xff1a;解密ECMAScript与JavaScript的微妙关系》 在前端开发的世界中&#xff0c;ECM…

搞懂flyaway一篇就够了

Flyway是一个用于数据库迁移的开源工具,它可以帮助开发人员轻松地管理数据库架构的变化。Flyway通过迁移来更新数据库,迁移可以使用特定于数据库的SQL语法或者用于高级数据库转换的Java编写。Flyway支持两种类型的迁移:有版本的迁移和可重复的迁移。有版本的迁移具有唯一的版…

Python编写API接口

本文将从以下几个方面详细阐述Python编写API接口的方法和技巧&#xff0c;希望能够对开发工程师们有所帮助&#xff1a; 一、API接口的基本概念 API全称为Application Programming Interface&#xff0c;是一种应用程序接口&#xff0c;可让不同的程序之间进行交互。API接口通…

TDD-LTE 附着流程和去附着流程

目录 1. 附着流程 1.1. 正常附着流程 2. 异常附着流程 2.1 RRC建立失败 2.2 核心网拒绝 2.3 eNodeB未收到初始化上下文建立请求 2.4 RRC重配置请求丢失 2. 去附着流程 2.1 非关机去附着流程 2.1.1 连接态非关机去附着 2.1.2 空闲态非关机去附着 2.2 关机去附着流程 …

实战Keras3.0:自定义图片数据集分类任务

一、创建自定义图片数据集 1、数据收集 以10张小狗图片和10张小猫图片为例 2、数据预处理 1、创建Excel表格&#xff0c;并在其中创建两列&#xff0c;一列是图片路径&#xff0c;另一列是对应的标签&#xff08;狗0、猫1&#xff09; 2、用pandas库的read_excel函数读取Exc…

java企业人事信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业人事信息管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为M…

【学习记录23】Linux环境下安装nginx

自己折腾了个服务器在上面跑前端项目&#xff0c;记录一下以备后期查询&#xff0c;为了省钱每年都换一次云服务器。。。每次都得重装各种东西&#xff01;&#xff01;&#xff01; 1、安装所需环境 //安装gcc yum install gcc-c//安装PCRE pcre-devel yum install -y pcre …

Python-单行赋值的执行顺序

一般情况下&#xff0c;python 的元组赋值可以当作没有顺序&#xff1a; a, b 1, 2 a Out[3]: 1 b Out[4]: 2 但是如果交换的变量存在关联&#xff0c;元组赋值就是有顺序的&#xff1a; a, b b, a a, b Out[6]: (2, 1) 结果是a,b的值交换了顺序。如果按照&#xff1a; …

RTC第二个功能和应用程序

一般RTC模块设备管理时间日历、计时器等。从年到二。一些爱普生RTC 模块可以通过使用来自32768 Hz的分割频率来管理次第二功能。本文件 描述了RTC模块的三个具体的应用程序。&#xff08;表1&#xff09; 表1中的功能和产品 [FOUT函数应用程序] 图1描述了RTC模块&#xff0…

springboot项目maven install 失败提示unable to rename “*.jar“ to “*.jar.original“

项目场景&#xff1a; 项目作为springcloud项目&#xff0c;安装包的打包一直使用的是idea中 maven->lifestyle->install 问题描述 今天打包的时候报错&#xff1a;unable to rename “*.jar” to “*.jar.original” 而且打包出来的jar包的大小明显小了 原因分析&…

iOS和iPadOS设备启动到打开App

一、设备启动过程 启动过程每个步骤包含的组件都经 Apple 加密签名以启用完整性检查&#xff0c;因此只有在验证信任链后&#xff0c;启动才能继续&#xff1b; 这些组件包括引导载入程序、内核、内核扩展项和蜂窝网络基带固件&#xff1b; 这一安全启动链的设计旨在验证软件的…

Python数据挖掘与机器学习实践技术应用

近年来&#xff0c;Python编程语言受到越来越多科研人员的喜爱&#xff0c;在多个编程语言排行榜中持续夺冠。同时&#xff0c;伴随着深度学习的快速发展&#xff0c;人工智能技术在各个领域中的应用越来越广泛。机器学习是人工智能的基础&#xff0c;因此&#xff0c;掌握常用…

qt .pro工程转vs工程

1. 新建vs空项目或者Qt Console Application&#xff1b; 2. 扩展 -》Qt VS Tools -》Open Qt Project (.pro) 打开对应的pro文件即可将.pro工程转成vs工程&#xff1b; 注意&#xff1a; &#xff08;1&#xff09;转成的vs工程在pro文件同级目录下&#xff0c;双击打开vcx…

网络通信(7)-TCP协议解析

目录 一、定义 二、主要特点 三、报文格式 四、工作方式

科兴未来|中国北京 · HICOOL 2024全球创业大赛招募启动

HICOOL 2024全球创业大赛正式启动&#xff0c;我们诚挚地邀请来自世界各地的创业项目报名参赛&#xff0c;在全球舞台上展示自己&#xff0c;加速成长。 一、参赛收获 大赛将为获奖项目提供包括人才落户、子女教育、医疗保障等在内的创业政策支持。此外&#xff0c;参赛项目将…

桶式移位器

前言 本篇文章介绍CPU的核心部件之一&#xff1a;桶式移位器&#xff0c;简称BS&#xff0c;英文全称为Barrel Shifter 桶式移位器最大的特点就是能在单周期内完成多种方式&#xff0c;各种位数的移位操作 常见的移位操作 常见的移位操作种类如下&#xff1a; 算术右移 是指…

实验笔记之——基于windows复现Instant-NGP

之前博客对NeRF-SLAM进行了调研&#xff0c;本博文先复现一下Intant-NGP。 学习笔记之——NeRF SLAM&#xff08;基于神经辐射场的SLAM&#xff09;-CSDN博客文章浏览阅读851次&#xff0c;点赞22次&#xff0c;收藏21次。NeRF 所做的任务是 Novel View Synthesis&#xff08;…

在前端开发中,如何优化网站的加载速度?

在前端开发中&#xff0c;网站的加载速度是一个至关重要的因素&#xff0c;它直接影响着用户体验和搜索引擎优化&#xff08;SEO&#xff09;。一个快速、响应迅速的网站不仅能让用户更加满意&#xff0c;还能提高网站的排名和流量。那么&#xff0c;如何优化网站的加载速度呢&…

计算机网络面试题总结

总结自Network | JavaGuide(Java面试 学习指南) 什么是OSI7层模型&#xff1f; 什么是TCP/IP 四层模型&#xff1f; 为什么网络要分层&#xff1f; 应用层有哪些常见的协议&#xff1f; 传输层有哪些常见的协议&#xff1f; 网络层有哪些常见的协议&#xff1f; 从输入…

python 基础教程一(序列的基础知识)

#为单行注释 多行注释为三个‘开头和结尾 常用内置函数 pow函数 pow(x,y,[z])求x的y次幂 如果z不省略对z进行%运算 abs函数求绝对值 divmod(x,y) 同时输出商和余数 **round(x,[d])**函数会把浮点数变为最接近的整数值&#xff0c;会四舍五入。x为浮点数&#xff0c;d为保留几…