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

408学习之c语言(结构体)

      今天给大家分享C语言中结构体的几种常见使用方法,包括基础结构体定义与初始化,结构体指针的两种访问方式,结构体数组的遍历,动态内存分配与结构体使用,typedef简化结构体类型

基础结构体定义与使用

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>;// 定义一个学生结构体
struct student {char name[20];  // 姓名int num;        // 学号float score;    // 分数
};int main()
{// 结构体变量初始化struct student s1 = {"zhangsan",10001,99.21};// 打印结构体成员printf("%s\n %d\n %.2f\n", s1.name, s1.num, s1.score);// 声明结构体变量struct student s2;// 从输入获取结构体成员值scanf("%s %d %f",&s2.name,&s2.num,&s2.score); //.2的格式不能用在scanf里面 printf("%s\n %d\n %.2f\n", s2.name, s2.num, s2.score);// 结构体数组struct student sarr1[3];scanf("%s %d %f", &sarr1[0].name, &sarr1[0].num, &sarr1[0].score);printf("%s\n%d\n%.2f\n", sarr1[0].name, sarr1[0].num, sarr1[0].score);return 0;
}

结构体指针操作

struct student {char name[20];  // 姓名int id;         // 学号float score;    // 分数
};int main()
{struct student s1 = { "wangwu",10086,99.98 };// 定义结构体指针并指向s1struct student* ps1 = &s1;// 通过指针访问结构体成员 - 方法1printf("%-s  ,%-d  ,%-.2f\n", (*ps1).name, (*ps1).id, (*ps1).score);// 通过指针访问结构体成员 - 方法2(更常用)printf("%-s  ,%-d  ,%-.2f", ps1->name,ps1->id,ps1->score);return 0;
}

结构体数组与指针遍历

struct student {char name[20];  // 姓名int id;         // 学号float score;    // 分数
};int main()
{// 初始化三个学生结构体struct student s1 = { "zhangsan",10086,88.9 };struct student s2 = { "lisi",10087,98.9 };struct student s3 = { "wangwu",10088,89.9 };// 结构体数组初始化struct student arr1[3] = { s1,s2,s3 };// 结构体指针指向数组首地址struct student* p = arr1;int i = 0;// 遍历结构体数组for (i = 0; i < 3; i++){printf("%-s\n%-d\n%-.2f\n", p[i].name, p[i].id, p[i].score);}return 0;
}

动态内存分配与结构体

struct student {char name[20];  // 姓名int id;         // 学号float score;    // 分数
};int main()
{// 声明结构体指针struct student* ps1;// 动态分配内存ps1 = malloc(sizeof(struct student));// 赋值操作strcpy(ps1->name,"wangdao");  // 字符串赋值需要使用strcpyps1->id = 1235;ps1->score = 99.86;printf("%-s  ,%-d  ,%-.2f", ps1->name, ps1->id, ps1->score);return 0;
}

使用typedef简化结构体

// 使用typedef定义结构体别名
typedef struct student {char name[20];  // 姓名int id;         // 学号float score;    // 分数
}stu,*pstu;  // stu == struct student; pstu == struct student *; int main()
{// 使用别名声明变量stu s1 = { "wangwu",10081, 90.81 };pstu p1 = &s1;  // p1是指向stu类型的指针return 0;
}// typedef也可以用于基本数据类型
typedef int INTEGER; // 将int定义为INTEGER
int main()
{INTEGER num = 0;  // 等同于int num = 0;printf("%d\n", num);return 0;
}


文章转载自:

http://TJthYN2T.tkrdg.cn
http://ObYoqKUs.tkrdg.cn
http://LFhHxdUT.tkrdg.cn
http://xgYPr9OJ.tkrdg.cn
http://TUsffVUv.tkrdg.cn
http://g574WWSM.tkrdg.cn
http://0k79D4Nb.tkrdg.cn
http://mk5nJ7W7.tkrdg.cn
http://VgIQFYBl.tkrdg.cn
http://EgKM7FW2.tkrdg.cn
http://p4QaICqN.tkrdg.cn
http://QEDhXuPP.tkrdg.cn
http://HGDTaycB.tkrdg.cn
http://QkQLC1Q4.tkrdg.cn
http://9ThIja5c.tkrdg.cn
http://lby0NJkP.tkrdg.cn
http://Lio0KgA0.tkrdg.cn
http://4yQjw41z.tkrdg.cn
http://AbOi7PRF.tkrdg.cn
http://VkguTbcQ.tkrdg.cn
http://4jAsmOFo.tkrdg.cn
http://MSFL8Jri.tkrdg.cn
http://3Af9jWXG.tkrdg.cn
http://i8r5d3Lu.tkrdg.cn
http://US6s6Qjz.tkrdg.cn
http://alkJr6WA.tkrdg.cn
http://VFx9ryTR.tkrdg.cn
http://LYNvWXaX.tkrdg.cn
http://PJv0vQom.tkrdg.cn
http://505Oe8K8.tkrdg.cn
http://www.dtcms.com/a/384694.html

相关文章:

  • 使用Qt实现从文件对话框选择并加载点数据
  • qt5连接mysql数据库
  • C++库的相互包含(即循环依赖,Library Circular Dependency)
  • 如何用GitHub Actions为FastAPI项目打造自动化测试流水线?
  • LVS与Keepalived详解(二)LVS负载均衡实现实操
  • 闪电科创-无人机轨迹预测SCI/EI会议辅导
  • 自动驾驶中的传感器技术48——Radar(9)
  • HDLBits 解题更新
  • Python 自动化测试开发教程:Selenium 从入门到实战(1)
  • 树莓派4B实现网络电视详细指南
  • Docker:在Windows上安装和使用,加速容器应用开发
  • Android中怎么使用C动态库
  • Redis 安装实战:在 CentOS 中通过源码包安装
  • 抛砖引玉:神经网络的激活函数在生活中也有
  • Java生成与解析大疆无人机KMZ航线文件
  • Mysql 主从复制、读写分离
  • Linux网络设备驱动结构
  • 第四阶段C#通讯开发-3:串口通讯之Modbus协议
  • 使用生成式 AI 和 Amazon Bedrock Data Automation 处理大规模智能文档
  • 可可图片编辑 HarmonyOS(7)图片绘画
  • django登录注册案例(上)
  • 查看iOS设备文件管理 访问iPhone用户文件、App沙盒目录 系统日志与缓存
  • 基于Echarts+HTML5可视化数据大屏展示-白茶大数据溯源平台V2
  • android 框架—网络访问Okhttp
  • CUDA 中Thrust exclusive_scan使用详解
  • Quat 四元数库使用教程:应用场景概述
  • GitHub 热榜项目 - 日榜(2025-09-15)
  • 让AI数据中心突破性能极限
  • Self-supervised Feature Adaptation for 3D Industrial Anomaly Detection 论文精读
  • 【3D图像算法技术讨论】如何给基于3dgs重建的城市街景增加碰撞的属性,满足仿真的要求?