《每天一分钟学习C语言·十一》static静态,内联函数,宏函数,排序

news2024/7/6 12:54:08

1、
static静态修饰符
static全局变量和普通全局变量区别
static全局变量只能在本文件中使用,普通全局变量可以在一个项目下的所有文件中使用,需要加extern。static全局变量只能初始化一次

static局部变量和普通局部变量区别:
static局部变量只能初始化一次
如:

while(i-- <3)
{
	static int j = 0
	j++; //第一次循环j==1,第二次j==2,第三次j==3
}

static函数和普通函数区别:
static函数只能在本文件使用
普通函数可以在其他文件调用,但需要在文件中加入包含这个函数申明的头文件。或者直接在文件全局处申明这个其他文件的函数,然后就可以在这个文件中调用这个函数了

2、
内联函数
内联函数的定义与调用该函数的代码必须在同一文件中,如果有多个文件需要使用某个内联函数,一般将内联函数定义在头文件中。头文件一般只放函数声明,但内联函数是例外,需要在头文件定义

# include<stdio.h>
inline static void eatline()
{
	printf(“haha”);
}
int main(void)
{
	eatline(); //调用内联函数
}

函数式宏一般没有return返回值,内联函数可以有return返回值

3、
快速排序函数qsort()

void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))

第一元素是数组首元素地址
第二个元素是数组长度
第三个元素是每个元素字节大小
第四个元素传入一个比较函数的函数地址
如对一个double的数组从小到大排序

int compar(const void *p1, const void *p2)
{
	const double * a1 = (const double *)p1; //必须强转
	const double *a2 = (const double *)p2;
	if(*a1 < *a2)
		return -1;
	else if (*a1 == *a2)
		return 0;
	else
		return 1;
}

4、
线性结构:数组(连续存储)、链表(离散存储)
线性结构常见应用:栈和队列
非线性结构:树和图

查找:折半查找
排序:冒泡、插入、选择、快排、归并

5、
宏函数

#include <stdio.h>
#define SUM(n) do { \
	int sum = 0; \
	while (n > 0) { \
		sum = sum + n; \
		n--; \
	} \
	printf("前n项和为:%d\n", sum); \
} while (0)

int main(void)
{
	int n = 5;
	SUM(n);  //15
	return 0;
}

宏函数的执行步骤是先把变量或者常量替换了,然后放到主函数里,这里n是变量,第一步替换:

do { 
	int sum = 0; 
	while (n > 0) { 
		sum = sum + n; 
		n--; 
	} 
	printf("前n项和为:%d\n", sum); 
} while (0)

第二步放到主函数:

int main(void)
{
	int n = 5;
	do { 
			int sum = 0; 
			while (n > 0) { 
				sum = sum + n; 
				n--;  //n是个变量可以自减操作,刚开始为5
			} 
			printf("前n项和为:%d\n", sum); 
	} while (0);
	return 0;
}

如果在主函数直接给宏函数赋常量,如SUM(5);则会报错,第一步替换:

do { 
	int sum = 0; 
	while (5 > 0) { 
		sum = sum + 5; 
		5--;   //5 = 5-1; error常量是不能修改的左值,可在刚开始定义一个变量,如int i = n; 后面用i计数和自减就不会报错
	} 
	printf("前n项和为:%d\n", sum); 
} while (0)
在这里插入图片描述

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

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

相关文章

【性能测试】JMeter分布式测试及其详细步骤

性能测试概要 性能测试是软件测试中的一种&#xff0c;它可以衡量系统的稳定性、扩展性、可靠性、速度和资源使用。它可以发现性能瓶颈&#xff0c;确保能满足业务需求。很多系统都需要做性能测试&#xff0c;如Web应用、数据库和操作系统等。 性能测试种类非常多&#xff0c…

盛元广通实验室业务流审批管理系统2.0

系统通过对取样、分析、数据处理、检验报告等分析全过程中多种影响因素的有效管理&#xff0c;强化检验质量&#xff0c;获得准确可靠的分析成果。业务流审批管理系统主要包括了检测管理、业务受理、样品管理、资源质量管理、分包管理、报告生成、统计分析等&#xff0c;系统能…

Spring学习 基于注解的AOP控制事务

8.1.拷贝上一章代码 8.2.applicationContext.xml <!-- 开启spring对注解事务的支持 --> <tx:annotation-driven transaction-manager"transactionManager"/> 8.3.service Service Transactional(readOnlytrue,propagation Propagation.SUPPORTS) publi…

商城小程序(7.加入购物车)

目录 一、配置vuex二、创建购物车的store模块三、在商品详情页中使用store模块四、实现购加入购物车功能五、动态统计购物车中商品的总数量六、持久化存储购物车的商品七、优化商品详情页的total侦听器八、动态为tabBar页面设置数据徽标九、将设置tabBar徽标的代码抽离为mixins…

在Spring Cloud Config Github配置中心

关于Spring Cloud系列我们其实讲解了很多&#xff0c;但是这里我们介绍一下Spring Cloud Config&#xff0c;它是一个解决分布式系统的配置管理方案&#xff0c;他包含了Client 和 Server 两个部分&#xff0c;server提供配置文件的存储&#xff0c;以接口的方式将配置文件内容…

【数据库】聊聊常见的索引优化-下

分页查询优化 主键排序 在实际的使用中&#xff0c;通过limit 10000,10 查询第10000记录到10010记录&#xff0c;mysql执行的时候是按照将前10010记录全部统计出来&#xff0c;然后剔除前10000条记录&#xff0c;选择后10条记录。这样来看的话&#xff0c;效率不高。 如果数据…

Java桶排序、基数排序、剪枝算法

桶排序算法 桶排序的基本思想是&#xff1a; 把数组 arr 划分为 n 个大小相同子区间&#xff08;桶&#xff09;&#xff0c;每个子区间各自排序&#xff0c;最后合并 。计数排序是桶排序的一种特殊情况&#xff0c;可以把计数排序当成每个桶里只有一个元素的情况。 1.找出待…

企鹅目标检测数据集VOC格式400张

企鹅&#xff0c;一种可爱而独特的鸟类&#xff0c;以其圆滚滚的身体、黑白相间的羽毛和独特的行走方式而备受人们喜爱。 企鹅是鸟纲、企鹅科的动物&#xff0c;它们生活在南半球&#xff0c;特别是南极地区。企鹅的体型短而肥胖&#xff0c;有着流线型的身体和黑白相间的羽毛…

24/1/8

传奇登录界面&#xff1b; #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口设置this->setWindowTitle("传奇");//窗口名this->setWindowIcon(QIcon("C:\\Users\\21528\\Desktop\\图标.png"));//窗口图标th…

【Flutter 开发实战】Dart 基础篇:最基本的语法内容

在深入了解 Dart 这门编程语言之前&#xff0c;我们需要了解一些关于 Dart 的最基本的知识&#xff0c;像是常量、变量、函数等等&#xff0c;这样才能够让我们的开发效率更上一层楼。在本节&#xff0c;我们将探讨一些基础语法&#xff0c;包括入口方法 main、变量、常量以及命…

ERA5和GNSS站点不并址的处理方法二:垂直补偿(获得GNSS站点高度的PWV、温度和气压,基于matlab)

0. 码字不易&#xff0c;点赞加关注&#xff08;公众号&#xff1a;WZZHHH&#xff0c;部分资料在公众号可以下载&#xff09; Part1 垂直补偿的原因 我们在获取GNSS站点位置的PWV有很多方法&#xff0c;其中一个是利用ERA5数据进行积分得到。由于ERA5格网位置和GNSS不并址&am…

信息安全监管

安全政策 中央办公厅2003的27号文件 《国家信息化领导小组关于加强信息安全保障工作的意见》 方针&#xff1a;积极防御&#xff0c;综合防范 目标、要求&#xff1a;全面提高信息安全防护能力&#xff0c;保护公众利益&#xff0c;维护国家安全 4大原则&#xff1a; 立足…

为什么建筑设计师选择网络渲染“效果图“

网络渲染一般是指&#xff1a;云渲染&#xff0c;建筑设计行业通常需要渲染室内、室内等场景的效果图&#xff0c;一般大型场景渲染时非常消耗电脑算力&#xff0c;并且渲染时长也会通过效果图的场景、尺寸等来决定&#xff0c;本文为用户整理建筑设计师选择网络渲染的原因&…

孪生神经网络MATLAB实战[含源码]

​一、算法原理 孪生神经网络&#xff08; Siamese neural network&#xff09;是一种深度学习网络&#xff0c;它使用两个或多个具有相同架构、共享相同参数和权重的相同子网。孪生网络通常用于寻找两个可比较事物之间的关系的任务。孪生网络的一些常见应用包括面部识别、签名…

3.9 EXERCISES

矩阵加法需要两个输入矩阵A和B&#xff0c;并产生一个输出矩阵C。输出矩阵C的每个元素都是输入矩阵A和B的相应元素的总和&#xff0c;即C[i][j] A[i][j] B[i][j]。为了简单起见&#xff0c;我们将只处理元素为单精度浮点数的平方矩阵。编写一个矩阵加法内核和主机stub函数&am…

用红葡萄酿造的白葡萄酒是怎样的?

“由黑变白”这是“黑葡萄”的直译&#xff0c;代表一种由深蓝到黑葡萄制成的白葡萄酒&#xff0c;这种酿酒方式起源于法国&#xff0c;黑皮诺和莫尼尔的红葡萄一直被加工成白葡萄酒&#xff0c;作为香槟的基础。这是可能的&#xff0c;因为红色浆果通常果肉较轻。红色素&#…

TypeScript 从入门到进阶之基础篇(八)函数篇

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇TypeScript 从入门到进阶…

Java课程设计团队博客 —— 基于网页的时间管理系统

博客目录 1.项目简介2.项目采用的技术3.功能需求分析4.项目亮点5.主要功能截图6.Git地址7.总结 Java团队博客分工 姓名职务负责模块孙岚组长 资源文件路径和tomcat服务器的相关配置。 前端的页面设计与逻辑实现的代码编写。 Servlet前后端数据交互的编写。 用户登录和断开连接…

独立式键盘控制的4级变速流水灯

#include<reg51.h> // 包含51单片机寄存器定义的头文件 unsigned char speed; //储存流水灯的流动速度 sbit S1P1^4; //位定义S1为P1.4 sbit S2P1^5; //位定义S2为P1.5 sbit S3P1^6; //位定义S3为P1.6 sbit S4P1^7; //位…

熟悉HBase常用操作

1. 用Hadoop提供的HBase Shell命令完成以下任务 (1)列出HBase所有表的相关信息,如表名、创建时间等。 启动HBase: cd /usr/local/hbase bin/start-hbase.sh bin/hbase shell列出HBase所有表的信息: hbase(main):001:0> list(2)在终端输出指定表的所有记录数据。 …