数据结构:动态内存分配+内存分区+宏+结构体

一、作业

1.定义一个学生结构体,包含结构体成员:身高,姓名,成绩;定义一个结构体数组有7个成员,要求终端输入结构体成员的值,根据学生成绩,进行冒泡排序。

#include <stdio.h>
#include <string.h>
typedef struct {int high;char name[10];float score;
}stu;
int main(int argc, const char *argv[])
{int i,j;stu temp; //其中的temp需要类型重定义stu arr[7]={{100,"1",95},{110,"2",84},{120,"3",70},{130,"4",42},{140,"5",99},{150,"5",77},{160,"6",66}};for(i=1;i<7;i++){for(j=0;j<7-i;j++){if(arr[j].score>arr[j+1].score){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}for(i=0;i<7;i++){printf("%d %s %f\n",arr[i].high,arr[i].name,arr[i].score);}return 0;
} 

二、知识回顾 

1.申请一个10个int类型的堆区空间,并实现选择排序(需要导入头文件 #include <stdlib.h>)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//申请一个10个int类型的堆区空间,并实现选择排序
int main(int argc, const char *argv[]){int *p=(int *)malloc(sizeof(int)*10);int i,j,index,temp;for(i=0;i<10;i++){printf("请输入数字\n");scanf("%d",(p+i));}for(i=0;i<10;i++){index=i;for(j=i;j<10;j++){if(*(p+j)>*(p+index))index=j;}temp=*(p+i);*(p+i)=*(p+index);*(p+index)=temp;}for(i=0;i<10;i++){printf("%d\n",*(p+i));}free(p);return 0;
}

2.用##拼接带参宏的参数

#include <stdio.h>
#include <string.h>
//用##实现字符串的拼接
#define unit_32 unsigned int
#define TYPE(a,b) a##b
int main(int argc, const char *argv[])
{TYPE(unit,_32) a=100;//unit_32 a=100//unsigned int a=100printf("%d\n",a);return 0;
}

3.宏函数(最后一行作为返回值,不需要return)

#include <stdio.h>
#include <string.h>
#define MAX(a,b) ({if(a>b) ret = a; else ret=b; ret;})int main(int argc, const char *argv[])
{int ret;printf("%d\n",MAX(90,78));return 0;
}

4.访问结构体成员

4.1通过结构体变量访问
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {char name[100];char sex;int high;int score;
}stu,*stu_p;int main(int argc, const char *argv[])
{ //指针指向桟区申请的空间stu s1;//strcpy(s1.name,"lisi");//s1.name="lisi"; 这是错误的,不能给数组赋值,数组名代表的是数组首地址,是一个常量,不能给常量赋值scanf("%s",s1.name);s1.sex='m';printf("%s\n",s1.name);return 0;
}
4.2通过结构体指针间接访问结构体成员
法一:用指针指向栈区申请的空间
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {char name[100];char sex;int high;int score;
}stu,*stu_p;int main(int argc, const char *argv[])
{ //指针指向桟区申请的空间stu s1;stu_p p=&s1;(*p).high=100;//strcpy(p->name,"lisi");//s1.name="lisi"; 这是错误的,不能给数组赋值,数组名代表的是数组首地址,是一个常量,不能给常量赋值scanf("%s",p->name);p->sex='m';printf("%s\n",s1.name);return 0;
}

法二:指针指向堆区申请的空间

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {char name[100];char sex;int high;int score;
}stu,*stu_p;int main(int argc, const char *argv[])
{ //指针指向堆区申请的空间stu_p p=(stu_p)malloc(sizeof(stu));gets(p->name);p->high=100;p->sex='m';printf("%s\n",p->name);free(p);p=NULL;return 0;
}

5.结构体数组

#include <stdio.h>
#include <string.h>
typedef struct{char name[100];int high;char sex;
}stu;int main(int argc, const char *argv[])
{stu arr[3]={{"zhangsan",100,'m'},{"lisi",110,'m'}};for(int i=0;i<3;i++){printf("%s %d %c\n",(arr+i)->name,arr[i].high,arr[i].sex);}return 0;
}

6.内存分配

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

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

相关文章

好书推荐丨《细说机器学习:从理论到实践》

文章目录 写在前面机器学习推荐图书内容简介编辑推荐作者简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家推荐一本有关机器学习的全新正版书籍&#xff0c;对机器学习、人工智能感兴趣的小伙伴们快来看看吧~ 机器学习 机器学习&#xff08;Machine Learning, ML&…

基于WOA优化的Bi-LSTM多输入分类预测(Matlab)鲸鱼算法优化双向长短期神经网络分类预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 鲸鱼优化算法&#xff08;WOA&#xff09;&#xff1a; 双向长短期神经网络&#xff08;Bi-LSTM&#xff09;&#xff1a…

配置Python环境及job运行的虚拟环境

1、配置Jenkins的Python环境&#xff1a;Manage Jnekins-Global Tool Configuration-Python 2、安装pyenv插件 此插件会给每个job都创建一个虚拟Python环境 安装后&#xff0c;在job config-build中选择 virtualenv builder build job的时候会自动在/opt/jenkins(node主机的…

亚马逊、沃尔玛、eBay等跨境平台自养号测评的风险和技术解析

亚马逊等平台延伸至世界各地&#xff0c;竞争激烈。许多卖家使用自养号测评来提高产品排名和销量。但自养号测评技术存在一定的技术局限性&#xff0c;很多卖家的账号因对自养号原理和底层环境搭建缺乏了解很多卖家的账号被关联封禁。本文将为您揭示自养号测评的风险&#xff0…

物流EDI:Verizon EDI 需求分析

作为物流行业的企业&#xff0c;Verizon与其供应商之间通过EDI来传输业务单据。在与Verizon建立EDI连接时&#xff0c;需要参考EDI 指南、采购订单条款和条件以及运输路线指南这三个文档。 点击此链接&#xff0c;获取上述的三个文档 Verizon供应商可以通过上述链接找到用于处…

小红书数据分析:sora爆火,为内容行业带来哪些变化

导语 春节还没过完&#xff0c;科技圈就出“大事”了~据悉&#xff0c;OpenAI发布了Sora&#xff0c;一种由文字生成视频的AI工具&#xff0c;且效果极其逼真&#xff0c;打破了多项纪录。Sora的出现&#xff0c;又让人类里通用人工智能AGI近了一步。那么。Sora的出现对于小红…

ESP32-Cam学习(2)——PC实时显示摄像头画面

具体代码和操作过程见&#xff1a; 3. 实时显示摄像头画面 (itprojects.cn)https://doc.itprojects.cn/0006.zhishi.esp32/02.doc/index.html#/e03.showvideo我主要记录一下我在复现的过程中&#xff0c;遇到的问题以及解决方法。 1.安装第三方库 首先电脑端的代码需要用pych…

RK3568平台开发系列讲解(Linux系统篇)内核中断机制

🚀返回专栏总目录 文章目录 一、注册中断处理程序二、下半部的概念2.1、Tasklet作为下半部2.2、工作队列作为下半部2.3、Softirq作为下半部沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中断是设备中止内核的一种方法,告诉内核发生了有趣或重要的事情。这些在Linu…

Itext生成pdf文件,html转pdf时中文一直显示不出来

之前使用freemark模板渲染ftl页面,转出的pdf中&#xff0c;css2有些样式好像不支持&#xff0c;比较常用的居中样式都没有效果&#xff0c;text-align:center 改造成使用html页面来转pdf&#xff0c;css2的样式可以生效,itext是不支持css3的弹性布局的ITextRenderer pdfRendere…

不买服务器也可以将本地服务放到互联网(ngrok内网穿透)

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 不买服务器也可以将本地服务放到互联网 前言ngrok基础&#xff1a;穿越网络边界的魔法使用场景&#xff1a;突破网络限制的利器实战 前言 在网络的世界里&#xff0c;有时候你的服务像是困在一座数字…

第四篇【传奇开心果系列】Python文本和语音相互转换库技术点案例示例:pyttsx3自动化脚本经典案例

传奇开心果短博文系列 系列短博文目录Python文本和语音相互转换库技术点案例示例系列 短博文目录前言一、雏形示例代码二、扩展思路介绍三、批量处理文本示例代码四、自定义语音设置示例代码五、结合其他库和API示例代码六、语音交互系统示例代码七、多语言支持示例代码八、添加…

适合tiktok运营的云手机需要满足什么条件?

TikTok作为一款全球热门的社交媒体平台&#xff0c;具有无限的市场潜力。然而&#xff0c;卖家在运营过程中常常会面临到视频0播、账号被降权、限流等问题&#xff0c;甚至可能因为多人同时使用一个IP而导致封号的风险。为了规避这些问题&#xff0c;越来越多的卖家将目光投向了…