当前位置: 首页 > news >正文

C语言——结构体数组

一.结构体的定义:

struct stu { char name[10];//姓名 int age;//年龄 long long id;//学号 double score;//成绩 };

二.结构体的三种初始化:

1.直接定义并初始化

struct stu b = { "小明",18,1345,78};

2.先定义后初始化

struct stu a; strcpy(a.name, "小华");//字符串必须用strcpy 进行初始化 a.age = 12; a.id=3344; a.score = 88;

3.先定义后键盘输入

printf("请输入你的名字->"); scanf("%s"&p->name); printf("请输入你的年龄->"); scanf("%d",&p->age); printf("请输入你的学号->"); scanf("%d",&p->id); printf("请输入你的成绩->"); scanf("%d"&p->score);

二.结构体的访问
1.值访问 a.name (*P).name (.)直接访问符 由变量对象 变量地址的解引用 直接去访问
2.地址访问-》结构体指针 结构体的地址 p->name (->)间接访问符 可以通过结构体地址 间接访问成员 效果(*p).name==p->name
p->name=(*p).name

1.打印函数1

void Printf(struct stu a) {//101~132 printf("%s %d %lld %.1lf\n", a.name, a.age, a.id, a.score); }

打印函数2

void Printf_plus(struct stu* pa) {//1001~1004 printf("%s %d %lld %.1lf\n", pa->name, pa->age, pa->id, pa->score); } //值传递和地址传递 效果一模一样 但是地址传递效率更高更能节约空间 优先选择地址传递

2.结构体排序

void Bubble_Sort_Student(struct Student tulun2510[], int len) { for (int i = 0;i < len - 1;i++) { for (int j = 0;j < len - 1 - i;j++) { if (tulun2510[j].score<tulun2510[j+1].score) { struct Student temp = tulun2510[j]; tulun2510[j] = tulun2510[j + 1]; tulun2510[j + 1] = temp; } } } } //和冒泡排序雷同

3.大于平均数

double Avg(struct Student tulun2510[], int len) { double sum = 0; double avg = 0; for (int i = 0;i < len;i++) { sum += tulun2510[i].score; } avg = sum / len; return avg; } void Printf_Avg_up(struct Student tulun2510[],int len) { double avg = Avg(tulun2510, len); printf("%lf\n", avg); for (int i = 0;i < len;i++) { if (tulun2510[i].score > avg) { Printf_plus(&tulun2510[i]); } } }

4.主函数

int main() { struct Student tulun2510[5] = { { "张名", 20, 2431231237, 80 } , { "王乐", 18, 2531431102, 47 } , { "张凤", 18, 2531271412, 54 } , { "毛毛", 19, 2531431110, 92 } , { "孟江", 19, 2431201208, 70 } }; //tulun2510:5个 struct Student tulun[0]~tulun[4]; //sizeof(tulun2510[5])->5*sizeof(struct Student)=160Byte //&tulun2510:struct Student(*)[5]//1 //tulun2510:首元素的地址 &tulun2510[0]/struct Student*//1 /*printf("%p %p\n", tulun2510, tulun2510 + 1);*/ //tulun2510:首元素的地址 &tulun2510[0]/struct Student*//1 //+1 +sizeof(struct Student) 32 printf("%p %p\n", &tulun2510, &tulun2510 + 1); //&tulun2510:struct Student(*)[5]//1 //+1 +sizeof(struct Student[5]) 160 printf("%d %d %d\n", sizeof(tulun2510), sizeof(*tulun2510), sizeof(&tulun2510)); //*tulun2510-> tulun2510[0]->32 //数组的输出 for (int i = 0;i < sizeof(tulun2510) / sizeof(tulun2510[0]);i++) { Printf_plus(tulun2510 + i); } printf("\n"); Bubble_age_student(tulun2510, 5); for (int i = 0;i < 5;i++) { Printf_plus(&tulun2510[i]); } printf("\n"); Printf_Avg_up(tulun2510, sizeof(tulun2510) / sizeof(tulun2510[0])); return 0; }
http://www.jsqmd.com/news/595361/

相关文章:

  • 2026年评价高的自动高速冲床/精密高速冲床/高速冲床品牌厂家推荐 - 行业平台推荐
  • 内容创作者福音:梦幻动漫魔法工坊助力短视频动漫素材制作
  • AI模型推理服务化:基于StructBERT构建高并发微服务架构
  • PyTorch 2.8镜像智能助手:科研人员用预装Jupyter+Pandas快速分析训练指标
  • Zynq PS端I2C避坑指南:为什么你的读操作总是失败?
  • tao-8k应用案例:基于Xinference搭建文档检索系统,免配置快速集成
  • RVC模型C盘清理与存储优化:管理大型模型权重文件
  • 2026年电源线怎么选?国内口碑供应商推荐来啦,行业内电源线生产厂家口碑推荐晋亿电器诚信务实提供高性价比服务 - 品牌推荐师
  • Nunchaku FLUX.1 CustomV3实战案例:为国风品牌生成兼具传统纹样与现代审美的插画
  • Phi-4-mini-reasoning轻量模型选型指南:何时该用Phi-4-mini而非Qwen3
  • Ostrakon-VL-8B在Ubuntu 20.04服务器上的生产环境部署详解
  • mPLUG VQA多场景落地:智慧农业大棚监控图→识别作物长势/病虫害/灌溉状态
  • Mathtype与AI结合:春联生成模型结果的数学公式优雅排版
  • 一份EtherCAT主站的FPGA Verilog代码 ethercat 主站 FPGA ve...
  • SolidWorks设计问答:SmallThinker-3B-Preview辅助解决工程制图难题
  • 图像二值化实战指南:从传统阈值到智能自适应算法的技术演进
  • vLLM-v0.17.1基础教程:从源码编译到wheel包安装全流程
  • Pixel Script Temple应用场景:企业内训视频脚本、产品发布会分镜、技术文档故事化
  • 2026年热门的激光喷码机/白墨喷码机/浙江激光喷码机/便携喷码机厂家选购参考汇总 - 行业平台推荐
  • MogFace人脸检测工具实测:16GB显存下支持最高4096×2160分辨率单图检测
  • 2026年可靠的甘肃格宾石笼网/兰州石笼网/石笼网厂家热卖产品推荐(近期) - 行业平台推荐
  • Linux权限2
  • CSS如何制作鼠标悬停显示的隐藏侧边栏_利用transition与宽度变化
  • nli-distilroberta-baseAI应用:作为LLM输出后处理模块过滤逻辑矛盾回答
  • 2026年比较好的威海哈氏合金反应釜/磁力搅拌反应釜/哈氏合金反应釜/加氢反应釜厂家专业度参考(精选) - 行业平台推荐
  • SecGPT-14B知识蒸馏:让OpenClaw学会内部安全规范
  • 2026年靠谱的大连艺术留学作品集/大连艺术留学作品集公司/大连艺术留学申请优质机构榜 - 行业平台推荐
  • Highlight.js在Vue3中的性能优化指南:按需加载 vs 全量引入
  • 2026年口碑好的外墙变形缝/地面变形缝/铝合金变形缝厂家推荐与采购指南 - 行业平台推荐
  • 如何创建物化视图日志_CREATE MATERIALIZED VIEW LOG记录基表DML变更