C语言 函数 上

2023-11-10

函数的定义:子程序 是一个大型程序中的某部分代码,由一个或多个语句块组成,它负责完成某项特定任务,相较于其他代码,具备相对的独立性
2.库函数 eg:打印函数:printf    字符串拷贝:strcpy    计算n的k次方:pow函数
3.自定义函数
4.函数参数
5.函数调用
6.函数的嵌套调用和链式访问
7.函数的声明和定义
8.☆☆☆☆☆☆  函数递归 ☆☆☆☆☆☆

函数具备相对独立性 由一个或者多个语句块组成,负责完成某项特定任务
一般会有输入参数并由返回值,提供对 过程 的封装和细节的隐藏,这些代码通常被集成为软件库


函数分为两类:1.库函数    2.自定义函数
库函数:C语言提供的标准代码,为了提高效率和可移植性, 编译器厂商 提供了一系列 库函数
C语言标准中约定好,由编译器的厂商提供实现
eg.C语言标准规定:strlen 函数的功能:求字符串的长度 函数名:strlen 参数:const char* str 返回类型 size_t
库函数:标准库中规定好的函数 
使用库函数:提高效率,帮助程序员软件开发
头文件中包含函数

常用的库函数有:
1.IO函数(输入输出函数)
2.字符串操作函数
3.内存操作函数
4.时间/日期函数
5.数学函数(math.h)
6.其他库函数

次方,pow 次方函数: 
#include <math.h> 对应的数学的头文件

int main()
{
	long long int n = (long long int)pow(2,6);//二的五次方
	double a = (double)pow(5.2, 3.0);
	printf("%lf\n", a);
	printf("%lld\n", n);
	return 0;
}

#include <string.h>
strcpy函数: 复制字符串 把一个数组指向的字符串拷贝在另一个数组中

int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "hello C";
	strcpy(arr1, arr2);//将数组2 arr2中的字符拷贝到数组1  arr1中打印  arr1目标空间的地址
	printf("%s\n", arr1);
	printf("%s\n", strcpy(arr1, arr2));
	//返回目标空间的地址
	return 0;
}

memest函数 内存设置函数 内存:memory

int main()
{
	char arr[] = "hello C";//memset函数将hello C 中 hello全部改变
	memset(arr, 'c', 7);//arr中的数组 改为c 共五个字节
	char arr1[] = "一切都会好的";
	memset(arr1, 'l', 4);
	printf("%s", arr1);
	printf("%s", arr);
	return 0;
} 

\0是字符串结束标志
库函数查询工具的使用:www.cplusplus.com
http://en.cpprerence.com 英文版
http://zn.cpprerence.com 中文版
         /*************自定义函数**************/
函数的组成:函数名  函数参数  返回类型  函数体
eg.写一个函数找出两个整数中的最大值 返回较大值整数

int main()
{
	printf("请您输入两个整数:");
	int a, b;
	scanf("%d %d", &a,&b);
	int c = max(a, b);
	printf("%d\n", c);
	printf("%d\n", max(a, b));
	return 0;
}//库函数 开箱即用

编写一个函数 比较两个数中的最大值

int Max(int a, int b)
{
	if (a >= b)
	{
		printf("%d", a);
	}
	else
	{
		printf("%d", b);
	}
}

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	Max(a, b);
	return 0;
} 

错误传参方法:
写一个函数交换两个整形变量内容
形式参数 形参 赋值临时变量第三个瓶子

void change(int x, int y)
{
	int t = 0;
	t = x; 
	x = y;
	y = t;
}

int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	printf("交换前:%d %d", a, b);

	//实际参数 实参
	change(a, b);
	//函数调用的时候就,将实参传递给形参
	//形参是实参的一份临时拷贝
	//对形参的修改不会改变实参的大小
	printf("交换后:%d %d", a, b);
	return 0;
}
int main()
{
	int num = 10;
	int* p = &num;//将num的地址传给指针变量,让指针变量进行保存,函数内外部之间没有联系
	//通过指针变量赋值,将地址联系起来,从而改变原参数的值。
	*p = 20;

	printf("%d\n", num);
	return 0;
}

 正确传参方式:
写一个函数交换两个整形变量内容
*变量存地址指针 地址变量

void change(int*a, int*b)//交换p1 p2顺序 交换地址,传递地址 交换顺序 *a *b代表指针代表地址
{
	int tmp = 0;//创建临时变量
	tmp = *a;//tmp=num1;
	*a = *b; //num1=num2;
	*b = tmp;//num2=tmp;
}

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);

	printf("交换前:num1 = %d num2 = %d", a, b);

	//实际参数 实参
	change(&a, &b);
	//函数调用的时候就,将实参传递给形参
	//形参是实参的一份临时拷贝
	//对形参的修改不会,改变实参的大小

	printf("交换后:num1 = %d num2 = %d", a, b);
	return 0;
} 

实参:真实传给函数的参数,叫做实参,可以是常量,变量,表达式,函数等
形参:指函数名后括号中的变量。因为形参只有在函数被调用的过程中才实例化(分配内存单元)
不调用函数时,形参只是一个形式,函数只有被调用的时候,形参才会被分配变量,形参相当于局部变量,只在函数内部有效
函数不被调用时,函数中的形参变量是一个模板,函数只有在被调用时,才会给参数分配空间
形参实例化后相当于实参的一份临时拷贝

例如、

int Max(int x, int y)
{
	if (x > y)
	{
		return x;
	}
	else
	{
		return y;
	}
}

void print()
{
	printf("一切都会好的\n");
}

int main()
{

	int num1, num2;
	scanf("%d %d", &num1, &num2);
	int b = Max(1 * 9, 81 / 3);
	printf("b:%d\n", b);
	int a = Max(num1, num2);
	printf("max:%d\n", a);
	print();
	return 0;
}

函数的调用:
传值调用 传址调用:
传值调用:只需要求值,和值有关,形参只能临时拷贝,对形参的修改不会影响实参
传址调用:把函数外部创建变量的内存地址传递给函数参数的一种调用方式,也就是函数内部可以直接操作函数外部的变量,
当你需要在函数内部修改来自函数外部的变量时,用传址调用,但是传址的本质也是传值调用
区分只有场景的不同

写一个函数判断是不是素数 是素数返回1,不是素数返回.

int is_prime(int n)
{
	//拿2~sqrt(n)开平方n之间数字试除 sqrt:开平方
	int i = 0;//判断变量
	for(i=2;i<=sqrt(n);i++)
	{
		if (n % i == 0)
			return 0;//直接返回,后面的循环不再执行
		//return比break效果更强
	}
	return 1;
}

int main()
{
	int i = 0;
	int count = 0;
	for (i = 100; i <= 200; i++) {
		if (is_prime(i))
		{
			count++;
			printf("%d ", i);
		}
	}
	printf("\ncount=%d\n", count);
	return 0;
} 

Bool类型进行判断 <stdbool.h>
_Bool 类型的变量只有两种取值 true和false

bool Judge(int a)
{
	int i = 0;
	for (i = 2; i <= sqrt(a); i++)
	{
		if (a % i == 0)
		{
			return false;
		}
	}
	return true;
}

int main()
{
	int count = 0;
	int a = 0;
	for (a = 100; a <= 200; a++)
	{
		if (Judge(a))
		{
			count++;
			printf("%d ", a);
		}
	}
	printf("一共有:%d 个素数\n", count);
	return 0;
}

 写一个函数判断是不是闰年
打印1000—2000年之间的闰年 

方法1:

bool year(int y)
{
	if ((y % 400 == 0 ) || (( y % 4 == 0) && (y % 100 != 0)))
		return true;
	else
		return false;
} 
int main()
{
	int y = 0;
	int count = 0;
	for (y = 1000; y <= 2000; y++)
	{
		if (Year(y))
		{
			count++;
			printf("%d ", y);
		}
	}
	printf("count=%d\n", count);
	return 0;
}

方法 2:

int Year(int y)
{
	if ((y % 400 == 0) || ((y % 4 == 0) && (y % 100 != 0)))
		return 1;
	else
		return 0; 
}
int main()
{
	int y = 0;
	int count = 0;
	for (y = 1000; y <= 2000; y++)
	{
		if (Year(y))
		{
			count++;
			printf("%d ", y);
		}
	}
	printf("count=%d\n", count);
	return 0;
}

键盘输入一个数,判断是闰年平年 方法1:

int Year(int y)
{
	if ((y % 400 == 0) || ((y % 4 == 0) && (y % 100 != 0)))
		return 1;
	else
		return 0;
}


int main()
{
	int year = 0;
	scanf("%d", &year);
	if (Year(year))
	{
		printf("%d是闰年\n", year);
	}
	else
	{
		printf("%d不是闰年\n", year);
	}
	return 0;
}

键盘输入一个数,判断是闰年平年 方法2:

bool Judge(int a)
{
	if ((a % 400 == 0) || ((a % 4 == 0) && (a % 100 != 0)))
		return true;
	else
		return false;
}


int main()
{
	int year = 0;
	printf("请您输入一个年份:\n");
	scanf("%d", &year);
	if (Judge(year))
	{
		printf("%d是闰年\n", year);
	}
	else
	{
		printf("%d不是闰年\n", year);
	}
	return 0;
}

写一个函数,实现一个整形有序数组的二分查找
找到了就返回下标,找不到返回0;
结果容易溢出,此方法不好。
有序数组:用二分查找

int beat(int arr[], int k, int sz)
{
	int left = 0;
	int right = sz - 1;//元素数-1

	while (left<=right)
	{
		//int mid = (left + right) / 2;
		int mid = left + (right - left) / 2;//代码更加抗揍
		if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else if (arr[mid] > k)
		{
			right = mid - 1;
		}
		else
		{ 
			return mid;
		}
	}
	return -1; 
}

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 0;
	scanf("%d", &k);//输入要查找的值
	//FindNum(); 函数名
	int sz = sizeof(arr) / sizeof(arr[0]);//数组个数 sizeof(arr[])
	int ret = beat(arr, k, sz);//k:在数组中寻找的元素
	if (ret == -1) 
	{ 
		printf("找不到\n");
	}
	else
	{
		printf("找到了,下标是%d\n", ret);
	}
	return 0;
}

数组元素过多 防止数据溢出 改造方法:
改造方法
值太长,结果溢出。
int main()
{
    int num1 = 2147483646;
    int num2 = 2147483644;
    int vag = num1 + (num1 - num2) / 2;
    printf("%d\n", vag);
    return 0;
}

写一个函数,每调用一次这个函数,就会将num的值加一,方法1:

void Add(int* p)
{
	*p = *p + 1;
}

int main()
{
	int num = 0;
	Add(&num);
	printf("%d\n", num);
	Add(&num);
	printf("%d\n", num);
	Add(&num);
	printf("%d\n", num);
	return 0;
}

方法2:

int Add(int n)
{
	return n + 1;
}

int main()
{
	int n = 0;
	int num = 0;
	num = Add(num);
	printf("%d\n", num);
	num = Add(num);
	printf("%d\n", num);
	for(n=1;n<=15;n++)
	{
		num = Add(num);
		printf("%d\n", num);
	}
	return 0;
}

函数的嵌套和调用
函数可以嵌套调用,但是函数不能嵌套定义,不能在一个函数的定义在再定义一个函数
一个函数中不能定义另一个函数,函数不能嵌套定义

函数之间可以嵌套调用 但是函数之间不能嵌套定义

链式访问:把一个函数的返回值当作另一个函数的参数 叫做链式访问

int main()
{
	int len = strlen("abc");
	printf("%d\n", len);
	printf("%d\n", strlen("abc"));
	char arr1[20] = { 0 };//abc\0......
	char arr2[] = "abc";
	printf("%d\n", strlen(strcpy(arr1, arr2)));
	//strcpy函数将arr2的地址赋值给arr1.strlen函数计算赋值后字符串的长度
	return 0;
}

eg:链式访问

int main()
{
	printf("%d", printf("%d", printf("43")));
	//打印43时返回2,打印2时返回1,利用了函数的链式访问,把一个函数的返回值当作另一个函数的参数 叫做链式访问
	//4321 返回值4321 利用了链式访问 不能加入\n 
	printf("\n");
	printf("%d ", printf("%d ", printf("43 ")));
	//打印4332
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言 函数 上 的相关文章

  • socket网络编程几大模型?看看CHAT是如何回复的?

    CHAT回复 网络编程中常见的有以下几种模型 1 阻塞I O模型 Blocking I O 传统的同步I O模型 一次只处理一个请求 2 非阻塞I O模型 Non blocking I O 应用程序轮询调用socket相关函数检查请求 不需
  • 什么是充放电振子理论?

    CHAT回复 充放电振子模型 Charging Reversal Oscillator Model 是一种解释ENSO现象的理论模型 这个模型把ENSO现象比喻成一个 热力学振荡系统 在这个模型中 ENSO现象由三个组成部分 充电 Char
  • 基于java的婴幼儿产品销售系统设计与实现

    基于java的婴幼儿产品销售系统设计与实现 I 引言 A 研究背景和动机 婴幼儿产品销售系统是针对婴幼儿家庭的产品销售平台 该系统的设计需要满足安全 便捷 高效等多个方面的要求 针对该系统 我们可以采用基于Java的Web框架搭建 主要分为
  • 软件测试|sqlalchemy relationship

    简介 SQLAlchemy是一个流行的Python ORM 对象关系映射 库 它允许我们以面向对象的方式管理数据库 在SQLAlchemy中 relationship 是一个重要的功能 用于建立表之间的关系 在本文中 我们将详细探讨 rel
  • 用CHAT分析高校体育智慧教学体系构建与探索研究现状

    CHAT回复 现阶段 高校体育智慧教学体系的构建与探索研究还处于初级阶段 但全球数字化转型大潮的推动下 一些较为前沿的研究和实践已经开始出现 1 教学平台的建设 很多高校已经开始尝试使用在线教育平台进行体育教学 把传统的面对面授课模式转变为
  • 软件测试|使用matplotlib绘制多种柱状图

    简介 在数据可视化领域 Matplotlib是一款强大的Python库 它可以用于创建多种类型的图表 包括柱状图 本文将介绍如何使用Matplotlib创建多种不同类型的柱状图 并提供示例代码 创建基本柱状图 首先 让我们创建一个基本的柱状
  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下
  • 【计算机毕业设计】电影院订票信息管理系统

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统电影院订票采取了人工的管理方法 但这种管理方法存在着许多弊
  • qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in ““

    系统环境 Win10家庭中文版 Qt 5 12 9 链接了一些64位的第三方库 程序编译完运行后出现 qt qpa plugin Could not find the Qt platform plugin windows in 弹窗如下 网
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • js中关于字符串的创建和判断类型

    文章目录 创建方法 判断类型的技巧 区分 1 typeof 2 instanceof 共点 1 Object prototype toSt
  • 华为OD机试真题-分披萨-2023年OD统一考试(C卷)

    题目描述 吃货 和 馋嘴 两人到披萨店点了一份铁盘 圆形 披萨 并嘱咐店员将披萨按放射状切成大小相同的偶数扇形小块 但是粗心服务员将披萨切成了每块大小都完全不同奇数块 且肉眼能分辨出大小 由于两人都想吃到最多的披萨 他们商量了一个他们认为公
  • 一台java服务器可以跑多少个线程?

    一台java服务器可以跑多少个线程 一台java服务器能跑多少个线程 这个问题来自一次线上报警如下图 超过了我们的配置阈值 打出jstack文件 通过IBM Thread and Monitor Dump Analyzer for Java
  • 计算机Java项目|基于SSM的微课学习系统

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • 计算机Java项目|基于SSM的篮球系列网上商城设计与实现

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了

    俺滴座右铭是不在沉默中爆发 就在沉默中灭亡 一起加油学习 珍惜现在来之不易的学习时光吧 等工作之后 你就会发现 想学习真的需要挤时间 厚积薄发啦 我们知道Java是面向对象的静态型编程语言 在Java的世界里万物皆对象 但我认为是万物皆数据
  • JCMsuite应用:光学环形谐振腔模拟

    本案程演示了环形谐振腔的模拟 这种类型的集成光子器件 例如用作升 降滤波器或在传感应用中 当物质或粒子附着在环上时 通过测量其共振频率的位移来检测 对于集成光子电路中的无源光器件 s矩阵通常是研究的热点 它描述了通过端口 波导进入设备的电磁
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • sychnorized积累

    sychnorized 1 对象锁 包括方法锁 默认锁对象为this 当前实例对象 和同步代码块锁 自己指定锁对象 2 类锁 指synchronize修饰静态的方法或指定锁对象为Class对象 3 加锁和释放锁的原理 现象 时机 内置锁th
  • 在 Python 中实现 List 抽象

    在 Python 中 创建一个包含多个对象的 list 很常见 例如 对于一组具有相同功能的对象 比如播放声音 希望能够使用类似 my list play 的语法来触发 list 中所有对象的 play 方法 另一个例子是 当希望关闭 li

随机推荐

  • 数据分析和可视化必备的几大软件,你用过几个?

    本文主要是面向数据分析初学者 因此分享的基本是一些免编程的可视化工具 详细介绍了7款工具 推荐大家使用 主要是让初学数据分析的朋友知道可视化工具大概有哪些 流行的有哪些 Power BI Power BI是微软开发的商业分析工具 用户可以在
  • 单片机与电脑接口(TTL与RS232电平模拟转换)电路及工作原理分析

    RS232接口概述 RS232接口又称DB9接口 是现在主流的串行通信接口之一 由于RS232接口标准出现较早 难免有不足之处 主要有以下四点 1 接口的信号电平值较高 易损坏接口电路的芯片 又因为与TTL电平不兼容故需使用电平转换电路方能
  • Hibernate缓存机制

    原文地址 http www iteye com topic 249465 缓存是位于应用程序与物理数据源之间 用于临时存放复制数据的内存区域 目的是为了减少应用程序对物理数据源访问的次数 从而提高应用程序的运行性能 Hibernate在查询
  • Pandas必会的方法汇总,用Python做数据分析更加如鱼得水!(附代码)

    用Python做数据分析光是掌握numpy和matplotlib可不够 Pandas是必须要掌握的一个重点 numpy虽然能够帮我们处理处理数值型数据 但是这还不够 很多时候 我们的数据除了数值之外 还有字符串 还有时间序列等 今天来分享一
  • 2022快速计算机视觉EI国际会议汇总

    本文不包含刚举办两三年的国内水会 主要收录了一些或许比较容易中且快速出结果的真正意义上的国际会议 可能存在编辑错误 最终以各会议官网为准 随缘更新 Abbr Name Submission Deadline Notification of
  • 整数在内存中如何存储

    整数在内存中的存储 在计算机内存中 整数一律采用补码的形式来存储 这意味着 当读取整数时还要采用逆向的转换 也就是将补码转换为原码 将补码转换为原码也很简单 先减去 1 再将数值位取反即可 我们先来解以下几个概念 原码 将一个整数转换成二进
  • 刷脸签到系统的设计与实现python+flask+mysql

    刷脸签到系统的设计与实现 语言 工具 html css ajax pyhotn Flask框架 bootstrap框架 SQLAlchemy mysql数据库 介绍 利用Python语言 Flask框架 Dlib库 MySQL数据库等工具设
  • Java线程:线程的调度-守护线程

    本文转载至 http lavasoft blog 51cto com 62575 221845 Java线程 线程的调度 守护线程 守护线程与普通线程写法上基本么啥区别 调用线程对象的方法setDaemon true 则可以将其设置为守护线
  • 贵阳市职称计算机报名时间,贵州贵阳市2013年职称计算机考试报名时间

    一 考试科目 科 目备 注 1中文Windows XP操作系统 2Word 2003中文字处理 3Excel 2003中文电子表格考生任选其一 金山表格2005 4PowerPoint 2003中文演示文稿考生任选其一 金山演示2005 5
  • hping 详解_hping3使用

    简介 hping3是一款免费的数据包生成器和分析器 可用于安全审计 防火墙规则测试 网络测试 端口扫描 性能测试 压力测试 DOS 几乎可以发送任意类型的TCP IP数据包 功能强大但是每次只能向一个IP地址发送数据包 还能够在两个相互包含
  • spring应用从多个properties文件中加载数据的问题

  • arch linux 文档下载_CASTEP的Linux 安装

    CASTEP http www castep org 是一款电子结构软件 可以计算Kohn Sham框架下的平面波DFT 能够完成VASP能够完成的大部分计算 相比于VASP有几个优势 能够完成基本所有VASP能实现的功能和一些VASP不能
  • golang中的随机数rand

    1 math rand 随机数从资源生成 包水平的函数都使用的默认的公共资源 该资源会在程序每次运行时都产生确定的序列 如果需要每次运行产生不同的序列 应使用Seed函数进行初始化 默认资源可以安全的用于多go程并发 关于种子seed 程序
  • nginx实现路由重定向功能 避免服务器出现 404 Not Found

    首先 到服务器上 vue react等项目路由的重定向已解决不了带后缀的访问 这个重定向需要 nginx 来实现 我们先执行 scp r 用户名 如果没设置过就是root 服务器公网地址 etc nginx nginx conf E 拷贝地
  • Java基础最新教程-小白到大神,从api层面到底层原理解抛

    JavaSe JDK JRE JVM是什么 JDK Java Development Kit JRE Java Runtime Environment JVM Java Virtual Machine Java跨平台核心是使用Jvm 在不同
  • Java基础学习之函数式编程Comsumer接口(JDK8)

    前言 从毕业到现在正好三年 高难度的项目做了不少 但是基础这个东西一段时间不接触就会忘得一干二净 话不多说 开始今天的学习 1 Consumer接口 接触过 消费者 生产者 模式的同学 肯定对这个单词不陌生 在java8函数式编程和lamb
  • mcd, lm, VS lx

    LED常识之 mcd lm w的关系 转载自 http 1198 vip blog 163 com blog static 202177117201211624535412 LED 亮度是指发光体 反光体 表面发光 反光 强弱的物理量 人眼
  • Zynq-LWIP上行传输大批量数据方法说明

    此篇是我在学习中做的归纳与总结 其中如果存在版权或知识错误或问题请直接联系我 欢迎留言 PS 本着知识共享的原则 此篇博客可以转载 但请标明出处 目录 1 项目简介 1 1 完成功能 1 1 使用工具 2 LWIP141 DMA上行传输数据
  • web前端学习笔记一

    一 VS Code快捷键 代码格式化 Shift Alt F 向上或向下移动一行 Alt Up或Alt Down 快速复制一行代码 Shift Alt Up或Shift Alt Down 快速替换 Ctrl H 二 标题标签 h1 定义最大
  • C语言 函数 上

    函数的定义 子程序 是一个大型程序中的某部分代码 由一个或多个语句块组成 它负责完成某项特定任务 相较于其他代码 具备相对的独立性 2 库函数 eg 打印函数 printf 字符串拷贝 strcpy 计算n的k次方 pow函数 3 自定义函