news 2026/6/15 19:55:57

一段代码教你搞定C语言中函数的知识点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一段代码教你搞定C语言中函数的知识点

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>

#include "behand.h"//包含头文件,就可以使用(拷贝内容)
//模块化设计

//静态库:搜索属性将project1编译成静态库lib,将lib和.h文件出售
//导入静态库才可使用 #pragma comment(lib,"文件名")

//函数:子程序,负责完成某项特定的任务,且具备相对独立性
//一般有输入参数和返回值,提供对过程的封装和对细节的隐藏
//函数由函数名,函数参数,返回类型,函数体组成
//函数是可以嵌套调用,但不能嵌套定义

//1.库函数 www.cplusplus.com查看。学会看文档。
//IO函数,字符串操作函数,字符操作函数,数学函数,时间函数...
//库函数的使用必须包含头文件
//2.自定义函数


//函数的定义
//未写返回类型时默认为int(不建议)
int get_max(int x,int y)
{
return (x > y ? x : y);
}

void swap(int* px,int* py)
{
/*
int temp;
temp=px;
px=py;
py=temp;
//为什么功能没有实现?
//x,y均为独立的空间,退出函数时a,b任为原来的空间,所以没有交换
//当实参传递给形参时,形参是实参的一份临时拷贝,对形参的修改不会影响实参
*/
int temp;
temp=*px;
*px=*py;
*py=temp;
}

int ADD(int x, int y)
//不调用函数,形参x,y不占用空间
//调用时才被分配空间,函数结束自动销毁
{
return (x+y);
}

//判断是否为素数
bool sushu(int x)
//bool类型:用来表示真假的变量
{
int i=0;
if (x == 0 || x == 1)
{
return false;
}
for (i=2;i < ((x+1)/2);i++)
//遍历看是否有约数
{
if (x % i == 0)
{
return false;
}
}
if (i == ((x +1)/ 2))
{
return true;
}

}

//判断是否为闰年
void year(int x)
{
if (x % 4 == 0 && (x % 100 != 0 || x % 400 == 0))
{
printf("闰年\n");
}
else
{
printf("不是闰年\n");
}
return 0;
}

int binary_search(int arr[],int k,int sz)//形参arr本质是指针
{
int left=0;
int right=sz-1;
while (left <= right)
{
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;//找不到
}

void ADD_one(int* x)
{
(*x)++;
return 0;
}

int main() //main函数中是有参数的
{
//文档阅读memset函数功能
char arr[20]="hello world";
memset(arr+1,'x',5);
//memory:内存 set:设置
printf("%s\n",arr);

int a=10;
int b=20;
//链式访问
printf("%d\n", get_max(a,b));//函数的调用

printf("交换前:a=%d,b=%d\n", a, b);
swap(&a,&b);
//&a,&b:实际参数
//将a与b的地址交给函数,这样函数与函数直接在数值上就建立了联系
printf("交换后:a=%d,b=%d\n", a,b);

//实参可以是常量,变量,表达式,函数等
printf("1+2+a+3=%d\n", ADD(ADD(1,2+a),3));
//无论实参是何种类型的值,在进行函数调用时,它们必须要有确定的值,以便把值传给形参

//什么时候传地址,什么时候不传?
//在函数内部是否想改变实参的值

//传值调用:ADD()
//函数的形参与实参分别占用不同的内存块,对形参的修改不会影响实参
//传址调用:swap()
//在函数外部创建变量的内存地址传递给函数参数,使得函数与函数外部的变量建立真正的联系

for (int u = 0;u < 99;u++)
{
if (sushu(u))
{
printf("%d ",u);
}
}
printf("\n");

year(2026);

int arr1[]={1,2,3,4,5,6,7,8,9,10};
int sz=sizeof(arr1)/sizeof(arr1[0]);
//数组传参传的是首元素地址,而不是整个数组,所以在函数内部计算参数部分数组大小是不准确的
int ret=binary_search(arr1,7,sz);

if (ret == -1)
{
printf("找不到\n");
}
else
{
printf("找到了,下标为%d\n",ret);
}

int num=0;
ADD_one(&num);
printf("%d\n",num);

//链式访问的前提是函数有返回值
printf("%d\n",printf("%d",printf("%d",43)));
//printf函数返回值是打印的字符的个数

behand(1);

return 0;
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 17:55:29

Virtual Router实战指南:将Windows电脑秒变专业级WiFi热点

Virtual Router实战指南&#xff1a;将Windows电脑秒变专业级WiFi热点 【免费下载链接】VirtualRouter Original, open source Wifi Hotspot for Windows 7, 8.x and Server 2012 and newer 项目地址: https://gitcode.com/gh_mirrors/vi/VirtualRouter 还在为多设备上网…

作者头像 李华
网站建设 2026/6/15 3:23:11

HAL_UART_RxCpltCallback与DMA协同原理

串口通信的“隐形搬运工”&#xff1a;HAL_UART_RxCpltCallback 与 DMA 的高效协同之道你有没有遇到过这样的场景&#xff1f;你的 STM32 正在通过串口接收传感器数据&#xff0c;突然系统卡顿、响应变慢&#xff0c;甚至丢帧。检查代码逻辑没问题&#xff0c;但就是不稳定——…

作者头像 李华
网站建设 2026/6/14 19:56:56

Hotkey Detective:一键揪出Windows热键占用元凶

Hotkey Detective&#xff1a;一键揪出Windows热键占用元凶 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 当你的CtrlAltDelete莫名失效&#x…

作者头像 李华
网站建设 2026/6/15 12:12:30

WebPlotDigitizer:科研图表数据智能提取的终极解决方案

WebPlotDigitizer&#xff1a;科研图表数据智能提取的终极解决方案 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/web/WebPlotDigitizer 还在为从学术论文中…

作者头像 李华
网站建设 2026/6/15 13:09:07

SEO优化标题实验:‘DDColor黑白照片修复’关键词排名提升技巧

DDColor黑白照片修复&#xff1a;从技术实现到SEO传播的全链路实践 在数字时代&#xff0c;一张泛黄的老照片不仅承载着家族记忆&#xff0c;也可能成为一段被遗忘历史的视觉见证。然而&#xff0c;传统修复方式耗时费力&#xff0c;普通人难以企及。如今&#xff0c;随着AI技…

作者头像 李华
网站建设 2026/6/15 13:06:51

QMC解码器终极指南:5分钟快速解密QQ音乐加密音频的完整方案

QMC解码器终极指南&#xff1a;5分钟快速解密QQ音乐加密音频的完整方案 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 还在为QQ音乐下载的加密音频无法在其他设备上播放而…

作者头像 李华