函数
1、概述
1.1、函数分类
1)系统函数(库函数)
2)用户定义函数
1.2、函数的作用
- 降低代码重复率
- 让程序更加模块化,利于阅读、修改和完善
1.3、函数的调用:随机数
函数调用 5 要素:
- 头文件:包含指定的头文件
- 函数名字:函数名字必须与头文件声明的名字一样
- 功能:要知道函数实现的功能
- 参数:参数类型要匹配
- 返回值:根据需要接收返回值
#include<time.h>
time_t time(time_t *t);
//功能:获取系统当前时间
//参数:常设置为NULL
//返回值:当前系统时间,time_t 相当于 long 类型,单位为毫秒# include<stdlib.h>
void srand(unsigned int seed);
//功能:用来产生 rand() 函数产生随机数时的随机种子
//参数:如果每次 seed 相同,rand() 产生的随机数相同
//返回值:无# include<stdlib.h>
int rand(void);
//功能:返回一个随机数
//参数:无
//返回值:随机数
#include<time.h>
# include<stdlib.h>
# include<stddio.h>
//双色球 6个红球,1-32,不可重复 1个蓝球,1-16,可以和红球号码重复
int arr[7]={0};
srand((unsigned int)time(NULL));
int value=0;
int flag=0;
int j;
for(int i=0;i<6;i++)
{value=rand()%32+1;//去重for(j=0;j<flag;j++){if(value==arr[j]){i--;break;} }if(j==flag){arr[flag]=value;flag++;}}
arr[7]=rand()%16+1;
2、函数的定义
2.1、函数的定义格式
返回类型 函数名(形式参数列表)
{函数体(数据定义部分,执行语句部分)
}
//函数定义
int add(int a,int b)
{int sum=a+b;return sum;
}int main()
{int a=10;int b=20;//函数调用int res=add(a,b);return 0;
}
- 在不同函数中的可以有相同的变量名,因为作用域不同;
- 在函数调用过程中,传递的参数称为实参(实际参数),有具体的值;
- 在函数定义过程中的参数称为形参(形式参数),只有类型,没有具体的值;
- 在函数调用过程中,将实参传递给形参;
- 在函数调用结束,函数相关的内存会在栈区自动销毁。
2.2、函数名、形参、实参、返回值
1)函数名:见名知意
2)形参列表:在函数没有被调用时,形参不占用内存中的存储单元
- 在定义函数时指定的形参,可有可无,根据函数的需要来设计,如果没有形参,括号内为空,或者写一个 void 关键字
3)函数体:函数功能实现的过程
4)返回值:通过函数中的 return 语句获得,return 后面的值也可以是一个表达式
- 尽量保证 return 中的数据类型和函数的返回类型一致
- 如果函数返回的数据类型和函数返回类型不一致,则以函数返回类型为准,对于数值类型,会自动进行数据类型转换
3、函数的调用
3.1、函数的执行流程
1)进入 main() 函数
2)调用自定义函数
3)自定义函数执行完,main() 会继续往下执行,直到执行 return 0,程序执行完毕
3.2、函数的形参和实参
- 形参出现在函数定义中,在整个函数体中都可以使用,离开函数则不能使用;
- 实参出现在主调函数中,进入被调函数后,实参也不能使用;
- 实参变量对形参变量的数据传递是单向的值传递,只能由实参传递给形参,而不能由形参传递给实参;
- 再调用函数时,编译系统临时给形参分配存储单元。调用结束后,形参单元被释放;
- 形参与实参在内存中存放在不同的存储单元。在执行一个调用过程中,形参的值发生改变,不会影响实参的值。
//字符串比较,相同返回0,不同返回 1 或者 -1
int strcmp(char ch1[],char ch2[])
{int i=0;while(ch1[i]==ch2[i]){//是否到字符串结尾if(ch1[i]=='\0'){return 0;}i++;}return ch1[i]>ch2[i]?1:-1;
}
4、函数样式
4.1、无参函数
- 无参函数调用,直接函数名后跟括号即可
//无参函数
void func1()
{printf("Hello\n");
}int func2()
{return rand()%10;
}int main()
{func1;srand((unsigned int)time(NULL));int randNum=func2();return 0;
}
4.2、有参函数
1)如果实参列表包含多个实参,则各参数间用逗号隔开;
2)实参与形参应该个数相等,类型匹配(相同或者赋值类型兼容),按顺序对应;
3)实参可以是常量、变量、表达式,无论实参是何种类型的量,在进行函数的调用时,他们应该具有确定的值。
//有参函数
//冒泡排序函数
void bubbleSort(int arr[],int len)
{for(int i=0;i<len-1;i++){for(int j=0lj<len-1-i;j++){if(arr[j]>arr[j+1]){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}return; //无返回值,return可写可不写
}int main()
{int arr[]={9,1,7,4,2,10,3,8,6,5};bubbleSort(arr,sizeof(arr)/sizeof(arr[0]));return 0;}
5、函数的返回值
- 如果函数定义没有返回值,函数调用时不能写 void 关键字,调用函数时也不能接收函数的返回值;
- void,空类型:void 类型不可以直接定义数据,但可以作为函数的返回值类型,表示没有返回值;
6、函数的声明
自定义函数三个过程:
- 函数声明;
- 函数定义;
- 函数调用
当函数定义在主函数之前,可以直接定义,不比声明;但是当函数定义在主函数之后,就必须在主函数之前声明函数。
//函数声明
extern int add(int a,int b);
//在同一个文件中进行声明和定义,函数声明的时候可以省略 extern
int add(int a,int b);
//还可以省略形参的参数名
int add(int, int );int main()
{//函数调用add(10,20);return 0;
}//函数定义
int add(int a,int b)
{return a+b;
}
- 在一个程序中,函数只能定义一次,但是可以声明多次,调用多次;
- 函数声明时,可以省略形参的名称,只需要说明形参的类型即可。
7、主函数和 exit 函数
1)exit() 函数
- 功能:终止程序执行;
- 参数:整型,就是函数中止执行之后返回的错误码
exit(0);
- 在主函数中,exit(0) 和 return 0 效果一样;但是在子函数中,调用 return 只是代表子函数中终止了,在子函数中调用 exit ,那么程序就终止了。
8、多文件编程
8.1、分文件编程(多文件编程)
- 把函数声明放在头文件 xxx.h 中,在主函数中包含相应的头文件
- 在头文件对应的 xxx.c 中实现 xxx.h 声明的函数
01main.c
#include<stdio.h>
#include"02func.h"int main()
{int a = 10;int b = 20;int res = maxValue(a, b);printf("%d\n", res);return 0;
}
02func.c
#include"02func.h"
//函数定义
int maxValue(int a, int b)
{return a > b ? a : b;
}
02func.h
#pragma once // 防止头文件重复包含
//#ifndef __02_FUNC_H__
//#define __02_FUNC_H__//全局变量的定义
//函数的声明
//extern int maxValue(int a, int b);
int maxValue(int a, int b);
//int maxValue(int,int);
8.2、防止头文件重复包含
- 为避免同一个头文件被包含多次,C/C++中有两种方式:
- #ifndef 方式;
- #pragma 方式
相关文章:
函数
1、概述 1.1、函数分类 1)系统函数(库函数) 2)用户定义函数 1.2、函数的作用 降低代码重复率让程序更加模块化,利于阅读、修改和完善 1.3、函数的调用:随机数 函数调用 5 要素: 头文件&…...
第四周:机器学习知识点回顾
前言: 讲真,复习这块我是比较头大的,之前的线代、高数、概率论、西瓜书、樱花书、NG的系列课程、李宏毅李沐等等等等…那可是花了三年学习佳实践下来的,现在一想脑子里就剩下几个名词就觉得废柴一个了,朋友们有没有同感…...
韩版传奇 2 源码分析与 Unity 重制(一)服务端 TCP 状态管理
专题介绍 该专题将会分析 LOMCN 基于韩版传奇 2,使用 .NET 重写的传奇源码(服务端 + 客户端),分析数据交互、状态管理和客户端渲染等技术,此外笔者还会分享将客户端部分移植到 Unity 和服务端用现代编程语言重写的全过程。 相关资料 官方论坛: https://www.lomcn.org/fo…...
python编程(2)之灯光秀的按钮
今天小编带领大家开始学习python编程的第二节,灯关秀的按钮。 按键在后续的学习和开发过程中,都是很重要的内容,是帮助我们获取外界信息的基础通道,识别按键的方式,在上节的内容给大家介绍了,大家可以进行学…...
pandas将dataframe列中的list转换为多列
在应用机器学习的过程中,很大一部分工作都是在做数据的处理,一个非常常见的场景就是将一个list序列的特征数据拆成多个单独的特征数据。 比如数据集如下所示: data [[John, 25, Male,[99,100,98]],[Emily, 22, Female,[97,99,98]],[Michae…...
小巧的Windows Memory Cleaner内存清理工具-释放内存,提升电脑的性能-供大家学习研究参考
软件介绍 Windows Memory Cleaner是一款非常不错的内存清理工具大小仅200KB,这款免费的 RAM 清理器使用本机 Windows 功能来清理内存区域,帮助用户释放内存,提升电脑的性能,有时程序不会释放分配的内存,从而使计算机变…...
STM32F072 CAN and USB
1 通用描述 1.1 STM8 MOSTek 6502 -> ST7 -> STM8 STM8型号单片机分为STM8A、STM8L、STM8S三个系列。 STM8A:汽车级应用 STM8L:超低功耗MCU STM8S:标准系列 1.2 STM32 - F1系列用的最多,最大工作频率72MHz - STM32固件库&am…...
卷积神经网络基础与补充
参考自 up主的b站链接:霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 https://blog.csdn.net/m0_37867091?typeblog CNN的历史发展: 这一点老师上课的时候也有讲到,BP的出现对CNN的发展至关重要 卷积的特性&#x…...
File Inclusion(Pikachu)
File Inclusion(local) 这里随便点击一个提交 观察url,显示是一个文件file1.php 可以直接通过url修改这个文件 找到自己的文件(本地文件)shell.php的路径写上去 就可以看到 File Inclusion(remote) 提交的是一个目标…...
【Redis刨析】知识图谱的构建与实现
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 ChatGPT体验地址 文章目录 前言引用构建过程Redis的知识图谱构建过程Redis介绍快的原因持久化 引用 对于编程的学习,过了初级阶段,我认为应该减少对视频的依赖&am…...
html学习笔记 标题、段落、换行、列表、超链接、图片、表格
<h1></h1> <p></p> <br>换行,不带线 <hr>换行,带线列表 类似↓ 2 1 无序列表 <ul><li></li><li></li><li></li> </ul>有序列表 <oi><li></l…...
汽车项目管理
项目节点: MR (Management Review)——管理层评审 KO (Kick Off)——项目正式启动 SI (Strategy Intent)——战略意图 SC (Strategy Confirmation)——战略确认 PA (Program Approval)——项目批准 PR (Product Readiness)——产品就绪 VP (Verification Prototype)…...
Tg-5511cb: tcxo高稳定性+105℃高温
爱普生推的一款TG-5511CB是一种高稳定的TCXO温补晶体振荡器,频率范围十分广泛从 10mhz ~ 54mhz,它的电源电压只需要3.3V,无论是手机还是其他电子设备,都能轻松提供稳定的电力支持。频率/温度特性表现出色,0.28 10^6Ma…...
Linux 命令 ifconfig 全面解析!
ifconfig 是 network interfaces configuring 的缩写。 在 Linux 操作系统中,ifconfig 用于显示或配置网络设备的参数信息。 查看网卡信息 $ ifconfig # 显示激活状态(up 状态)的网卡信息 eth0 Link encap:Ethernet HWaddr 00:0c:29:75:8…...
00-Git 应用
Git 应用 一、Git概述 1.1 什么是Git git 是一个代码协同管理工具,也称之为代码版本控制工具,代码版本控制或管理的工具用的最多的: svn、 git。 SVN 是采用的 同步机制,即本地的代码版本和服务器的版本保持一致(提…...
安全运维是做什么的,主要工作内容是什么
安全运维,简称SecOps,是一种集成安全措施和流程到信息技术运维的实践。它的目的是确保在日常运维活动中,如网络管理、系统维护、软件更新等,均考虑并融入安全策略。安全运维的核心是实现安全和运维团队的密切协作,以快…...
nodejs+vue+ElementUi大学新生入学系统的设计与实现1hme0
采用B/S模式架构系统,开发简单,只需要连接网络即可登录本系统,不需要安装任何客户端。开发工具采用VSCode,前端采用VueElementUI,后端采用Node.js,数据库采用MySQL。 涉及的技术栈 1) 前台页面…...
Unity-序列化和反序列化
序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程。序列化最主要的用途就是传递对象和保存对象。 在Unity中保存和加载、prefab、scene、Inspector窗口、实例化预制体等都使用了序列化与反序列化。 1 可序列化类型 1> 自定义的具有Serial…...
如何将语音版大模型AI接入自己的项目里(语音ChatGPT)
如何将语音版大模型AI接入自己的项目里语音ChatGPT 一、语音版大模型AI二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例5、智能生成API代码 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、语音版大模型AI 基于阿里通义千问、百…...
鸿蒙列表,item组件封装传参问题?@ObjectLink 和@Observerd
鸿蒙列表渲染,封装内容组件,进行item传参会报错? class FoodClass {order_id: number 0food_name: string ""food_price: number 0food_count: number 0 }Entry Component struct Demo07 {State message: string Hello World…...
3步实现Web界面设计标注高效交付:面向全栈团队的Sketch Measure应用指南
3步实现Web界面设计标注高效交付:面向全栈团队的Sketch Measure应用指南 【免费下载链接】sketch-measure Make it a fun to create spec for developers and teammates 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-measure 在Web开发项目中&#x…...
eSearch一站式屏幕效率工具安装指南
eSearch一站式屏幕效率工具安装指南 【免费下载链接】eSearch 截屏 离线OCR 搜索翻译 以图搜图 贴图 录屏 万向滚动截屏 屏幕翻译 Screenshot Offline OCR Search Translate Search for picture Paste the picture on the screen Screen recorder Omnidirectional scrolling sc…...
iOS内购避坑指南:从沙盒测试到正式上线的完整流程(附常见错误解决方案)
iOS内购全流程实战:从沙盒测试到生产环境的避坑手册 当你第一次集成iOS内购(IAP)时,是否遇到过这些场景?用户付款后商品迟迟未到账、沙盒测试时收据验证总是失败、审核阶段一切正常但上线后出现大量丢单...这些问题往往…...
Android Studio 高版本兼容低版本项目配置
AndroidStudio开发工具高版本兼容低版本项目配置:1、 JDK 配置:gradle.properties 文件中指定jdk 版本:org.gradle.java.homeD\:\\ProgramFiles\\JDK\\jdk-11.0.262 配置Gradle 编译版本:3. 显示所有Gradle task 列表设置完成后&a…...
B站视频字幕抓取实战:Tampermonkey搭配GreasyFork脚本,5分钟搞定CC字幕导出
B站视频字幕高效提取指南:Tampermonkey与GreasyFork脚本深度应用 每次观看B站优质内容时,那些精心制作的字幕是否让你想保存下来反复学习?传统录屏或手动抄写效率低下,而专业工具又过于复杂。本文将带你探索浏览器脚本的魔法世界&…...
AI原生应用领域链式思考:构建高效应用架构
AI原生应用领域链式思考:构建高效应用架构 关键词:AI原生应用、链式思考、应用架构、大模型协同、上下文管理 摘要:本文从AI原生应用的核心特征出发,结合"链式思考"这一关键设计模式,系统讲解如何构建高效能…...
Z-Image-Turbo LoRA WebUI实战案例:为独立游戏开发者生成角色立绘素材
Z-Image-Turbo LoRA WebUI实战案例:为独立游戏开发者生成角色立绘素材 1. 项目概述与价值 作为一名独立游戏开发者,你是否曾经为角色立绘的设计而头疼?传统的美术外包成本高昂,自己绘制又需要专业技能。现在,通过Z-I…...
从原理到实战:位运算巧解最小码距(附完整代码)
1. 什么是码距?从生活场景理解概念 第一次听到"码距"这个词时,我脑海里浮现的是超市货架上相似商品间的距离。后来才发现,在计算机世界里,它描述的是两个编码之间的差异程度。举个生活中的例子:假设我们用5…...
别再只用计数器了!手把手教你用Java实现滑动窗口限流(附完整可运行代码)
从零构建高精度滑动窗口限流器:Java实战与生产级优化 深夜的报警短信又一次震醒了你——核心API在整点时刻被突发流量冲垮。翻开监控图表,发现简单的计数器限流就像漏水的篮子,每到时间窗口切换的临界点,系统就会遭遇请求洪峰。这…...
Kodi PVR IPTV Simple全方位应用指南:从入门到精通的多场景解决方案
Kodi PVR IPTV Simple全方位应用指南:从入门到精通的多场景解决方案 【免费下载链接】pvr.iptvsimple IPTV Simple client for Kodi PVR 项目地址: https://gitcode.com/gh_mirrors/pv/pvr.iptvsimple 一、场景痛点分析:当IPTV体验不如预期时&…...
