C语言结构体介绍

ops/2024/9/26 1:23:33/

文章目录

  • 前言
  • 一、结构的基础知识
  • 二、结构的声明
  • 三、结构体成员的类型
  • 四、结构体变量的定义和初始化
    • 1. 结构体变量的定义
    • 2. 结构体变量的初始化
  • 五、结构体成员的访问
  • 六、结构体传参
  • 总结


前言

C语言结构体的基础知识,结构体的声明,结构体成员的类型,结构体变量的定义和初始化,结构体变量定义,结构体变量初始化,结构体成员的访问,以及结构体传参。


一、结构的基础知识

  • 结构时一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。

二、结构的声明

结构体声明的内容如下:

struct tag
{member-list;// 成员列表
}variable-list; //注意分号不能丢
  • 说明
  • struct 是结构体的关键字
  • tag 是结构体标签,可以自己定义
  • member-list 是成员列表,可以是不同类型的成员变量。
  • variable-list 结构体变量,可以在创建类型的同时直接创建结构体变量。
struct Peo1
{char name[20];char sex[5];char tele[12];int age;
};struct Peo2
{char name[20];char sex[5];char tele[12];int age;
}p1, p2;
// 这里的p1 和 p2是基于struct Peo2创建的结构体变量
// 并且结构体类型的声明在main函数外,所以是p1和p2全局变量
int main()
{return 0;
}

三、结构体成员的类型

  • 结构体成员可以是标量、数组、指针,甚至是其他结构体。
struct Peo
{char name[20];char sex[5];char tele[12];int age;
};struct S
{struct Peo p; // 结构体变量 p 作为 struct S 的结构体成员int num;float pi;
};int main()
{return 0;
}

四、结构体变量的定义和初始化

1. 结构体变量的定义

    1. 可以直接在创建结构体类型的同时创建结构体变量。
    1. 可以使用 struct + 标签名 + 变量名 来创建全局或局部的结构体变量
// 结构的声明
struct Peo
{char name[20];char sex[5];char tele[12];int age;
}p1,p2; // p1 p2 是全局的结构体变量struct Peo p3; // p3 也是全局的结构体变量int main()
{struct Peo p4; // p4 局部的结构体变量return 0;
}
  • 说明
  • 结构体类型也可以在main函数中创建,创建位置不同,则作用域不同。
  • 一般情况下结构体类型都创建在全局。
  • 结构体变量的作用域取决于定义结构体变量的位置,如上 p1 p2 p3就是全局变量,p4是局部变量。

2. 结构体变量的初始化

  • 按照结构体成员变量的类型初始化即可。
  • 结构体类型可以不完全初始化。
// 结构的声明
struct Peo
{char name[20];char sex[5];char tele[12];int age;
};struct S
{struct Peo p; // 结构体变量 p 作为 struct S 的结构体成员int num;float pi;
};int main()
{struct Peo stu = {"张三", "男", "15588886666", 18};struct S class = { {"lisi", "女", "15588886666", 20}, 100, 3.1415f };return 0;
}
  • 结构体类型中包含结构体,只要按照加{},按照成员变量的顺序初始化即可

五、结构体成员的访问

  • 结构体成员有两种访问方式
    1. 结构体对象 + . + 成员变量
    1. 结构体指针 + -> + 成员变量
#include <stdio.h>
// 结构的声明
struct Peo
{char name[20];char sex[5];char tele[12];int age;
};struct S
{struct Peo p; // 结构体变量 p 作为 struct S 的结构体成员int num;float pi;
};void print1(struct Peo stu )
{printf("%s %s %s %f\n", stu.name, stu.sex, stu.tele, stu.age); // 通过结构体对象.成员变量访问
}void print2(struct Peo* s)
{printf("%s %s %s %f\n", s->name, s->sex, s->tele, s->age); // 通过结构体指针->成员变量访问
}int main()
{struct Peo stu = { "张三", "男", "15588886666", 18 };struct S class = { {"lisi", "女", "15588886666", 20}, 100, 3.1415f };printf("%s %s %s %d\n", stu.name, stu.sex, stu.tele, stu.age); //张三 男 15588886666 18printf("%s %s %s %d %d %f\n", class.p.name, class.p.sex, class.p.tele, class.p.age, class.num, class.pi);//lisi 女 15588886666 20 100 3.141500print1(stu);print2(&stu);return 0;
}

六、结构体传参

  • 函数形参是实参的一份临时拷贝。所以若直接传递结构体对象,会降低性能。
  • 在结构体传参时,尽量采用结构体地址作为参数

总结

C语言结构体的基础知识,结构体的声明,结构体成员的类型,结构体变量的定义和初始化,结构体变量定义,结构体变量初始化,结构体成员的访问,以及结构体传参。


http://www.ppmy.cn/ops/11321.html

相关文章

9月BTE第8届广州国际生物技术大会暨展览会,全媒体聚焦下的高精尖行业盛会

政策春风助力&#xff0c;共迎大湾区生物医药行业50亿红利 今年3月“创新药”首次写入国务院政府工作报告之后&#xff0c;广州、珠海、北京多地政府纷纷同步出台了多项细化政策&#xff0c;广州最高支持额度高达50亿元&#xff0c;全链条为生物医药产业提供资金支持&#xff…

Oracle-操作【Python-cx_oracle】

一、cx_oracle 1 简介 通过Python扩展模块cx_Oracle访问Oracle数据库cx_Oracle通常使用 pip 安装Oracle 客户端库需要单独安装 2 特点 支持多个 Oracle 客户端和数据库版本执行 SQL 和 PL/SQL 语句广泛的 Oracle 数据类型支持&#xff0c;包括大型对象&#xff08;CLOB 和 …

光伏无人机勘探技术应用分析

光伏无人机勘探与传统勘探想必&#xff0c;具有智能化作业、测控精度高、环境适应性强等明显优势&#xff1b;卫星勘探辅助其能更快速甚至实时完成测绘拼图&#xff1b;在进行勘察时&#xff0c;可根据需要自由更换机载设备&#xff1b;自动诗经建模使数据更直观&#xff0c;工…

python常见语法

变量赋值&#xff1a; my_var 10 基本数据类型&#xff1a; 整数&#xff08;int&#xff09;、浮点数&#xff08;float&#xff09;、字符串&#xff08;str&#xff09;、布尔值&#xff08;bool&#xff09;、列表&#xff08;list&#xff09;、元组&#xff08;tuple&…

视频不够清晰怎么办?教你几种有效方法

在我们日常生活中&#xff0c;有时候我们会遇到不清晰的视频&#xff0c;这给我们带来了很多不便。那么&#xff0c;怎么将不清晰的视频变清晰呢&#xff1f;本文将为您介绍一些常用的软件工具&#xff0c;帮助您提升视频的清晰度。 方法一&#xff1a;使用AI技术 AI技术可以通…

使用socket client源码,调用addresstool地址关联算法

之前使用httpserver方式发布地址关联服务&#xff0c;发现每秒只能处理1800条地址&#xff0c;远远没有达到本地计算每秒1万条的速度&#xff0c;于是改变思路&#xff0c;使用socket发布服务。 这是客户端代码 直接上代码 package org.socket;import org.address.AddressTool…

聚道云软件连接器助力医疗器械有限公司打通金蝶云星辰与飞书

摘要 聚道云软件连接器成功将金蝶云星辰与飞书实现无缝对接&#xff0c;为某医疗器械有限公司解决采购订单、付款单同步、审批结果回传、报错推送等难题&#xff0c;实现数字化转型升级。 客户介绍 某医疗器械有限公司是一家集研发、生产、销售为一体的综合性医疗器械企业。…

python爬虫之爬取微博评论(4)

一、获取单页评论 随机选取一个微博&#xff0c;例如下面这个 【#出操死亡女生家属... - 冷暖视频的微博 - 微博 (weibo.com) 1、fnf12&#xff0c;然后点击网络&#xff0c;搜索评论内容&#xff0c;然后预览&#xff0c;就可以查看到网页内容里面还有评论内容 2、编写代码…