C语言初阶—函数
函数:子程序,是一个大型程序中的某部分代码,由一个或多个语句块组成,它负责完成某项特定任务,而且相较于其他代码,具有相对独立性。一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏,这些代码通常被集成为软件库。
库函数
可以在Reference - C++ Reference (cplusplus.com)上查看库函数的详细介绍。
char * strcpy ( char * destination, const char * source );

#include <stdio.h>
#include <string.h>//char * strcpy ( char * destination, const char * source );
int main()
{char arr1[20] = {0};char arr2[20] = "Hello World!";strcpy(arr1,arr2);printf("%s\n",arr1);return 0;
}

void * memset ( void * ptr, int value, size_t num );

#include <stdio.h>
#include <string.h>//void * memset ( void * ptr, int value, size_t num );
int main()
{char arr1[20] = "Hello World!";memset(arr1,'$',5);printf("%s\n",arr1);return 0;
}

数组名就是首元素地址,可以把首元素地址加上数字,再配合后面的num,可以达到对字符数组即字符串内任意位置的字符进行修改。
#include <stdio.h>
#include <string.h>//void * memset ( void * ptr, int value, size_t num );
int main()
{char arr1[20] = "Hello World!";memset(arr1+6,'$',5);printf("%s\n",arr1);return 0;
}

使用库函数时,必须包含对应的头文件。
自定义函数
求两个数中的最大值
#include <stdio.h>
#include <string.h>int get_max(int a,int b){if(a >= b)return a;elsereturn b;//return (a > b ? a : b);
}
int main()
{//求两个数中的最大值int a = 0;int b = 0;int c = 0;scanf("%d %d",&a,&b);//c = (a > b ? a : b);c = get_max(a,b);printf("%d\n",c);return 0;
}
交换两个数,注意形参和实参的区别,传值和传址的区别。
如果不用指针传地址的话,交换的只是形参,而不会改变实参,从而达不到通过函数来交换数据的效果。
#include <stdio.h>
#include <string.h>void swap(int x,int y){int z = x;x = y;y = x;
}
int main()
{//交换两个数int a = 0;int b = 0;int c = 0;scanf("%d %d",&a,&b);swap(a,b);printf("%d %d\n",a,b);return 0;
}
结果如图,并没有达到交换的效果:

通过调试可以看出,a,b和x,y地址不同,是完全不同的两个变量,交换形参x和y的值并不能交换a和b的值。

当实参传递给形参的时候,形参是实参的一份临时拷贝,对形参的修改不会影响实参。
应该传递变量的地址,通过对地址解引用来改变变量的值。
#include <stdio.h>
#include <string.h>void swap(int* a,int* b){int c = *a;*a = *b;*b = c;
}
int main()
{//交换两个数int a = 0;int b = 0;int c = 0;scanf("%d %d",&a,&b);swap(&a,&b);printf("%d %d\n",a,b);return 0;
}

在需要修改实参的情况下,通过传址传参才能达到修改实参的效果。
一个工程中,可以有多个.c文件,但是只能有一个main函数。




函数可以嵌套调用,但是不能嵌套定义。
函数可以链式调用

#include <stdio.h>int main()
{printf("%d\n",printf("%d",printf("%d",43)));return 0;
}
先是 main 函数进去,然后 printf 一层层调用,先是最里层 printf 打印43,43是两个字符,所以 printf("%d",43) 返回值是 2 ,第二层 printf 相当于 printf("%d",2) ,所以第二层 printf 打印 2 ,2是 1 个字符,所以 printf("%d",2) 返回值是 1 ,第三层 printf 相当于 printf("%d",1) ,所以第三层 printf 打印 1 ,最后打印的结果就是4321,如图:

函数不写返回值的时候,默认返回类型是 int ,但还是建议写好返回值,这样更直观。在写好返回值但是不返回的时候,在一些编译器上返回的是函数执行过程中最后一条指令执行的结果。
int main(void)
{return 0;
}
这种写法是明确的说明,main函数不需要参数。
相关文章:
C语言初阶—函数
函数:子程序,是一个大型程序中的某部分代码,由一个或多个语句块组成,它负责完成某项特定任务,而且相较于其他代码,具有相对独立性。一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏&a…...
vue3的router
需求 路由组件一般放在,pages或views文件夹, 一般组件通常放在component文件夹 路由的2中写法 子路由 其实就是在News组件里面,再定义一个router-view组件 他的子组件,机会渲染在router-view区域 路由传参 <RouterLink :to"/news…...
云时代【5】—— LXC 与 容器
云时代【5】—— LXC 与 容器 三、LXC(一)基本介绍(二)相关 Linux 指令实战:使用 LXC 操作容器 四、Docker(一)删除、安装、配置(二)镜像仓库1. 分类2. 相关指令…...
npm digital envelope routines::unsupported
问题描述:npm运行命令报错:digital envelope routines::unsupported 原因:node版本过高 解决方案:在运行命令之前加上 SET NODE_OPTIONS--openssl-legacy-provider && SET NODE_OPTIONS--openssl-legacy-provider &&a…...
深入理解Flutter中的StreamSubscription和StreamController
在Flutter中,StreamSubscription和StreamController是处理异步数据流的重要工具。它们提供了一种方便的方式来处理来自异步事件源的数据。本文将深入探讨它们的区别以及在实际应用中的使用场景。 StreamSubscription StreamSubscription代表了对数据流的订阅&…...
聊聊 HTTP 性能优化
作为用户的我们在 "上网冲浪" 的时候总是希望快一点,尤其是抢演唱会门票的时候,但是现实并非如此,有时候我们会遇到页面加载缓慢、响应延迟的情况。 而 HTTP 协议作为互联网世界的基础,从网站打开速度到移动应用的响应…...
六、防御保护---防火墙内容安全篇
攻击可能只是一个点,防御需要全方面进行 DPI --- 深度包检测技术 --- 主要针对完整的数据包(数据包分片,分段需要重组),之后对 数据包的内容进行识别。(应用层) 1,基于“特征字”的…...
HC32F460 是否有 RTC?在电池供电方案中该如何使用?
[技术问答]HC32F460 是否有 RTC?在电池供电方案中该如何使用?_hc32f460 rtc-CSDN博客 华大HC32A460 系列介绍(三)_华大单片机内部温度传感器-CSDN博客 HC32F460PETB-LQFP100-华大半导体有限公司 [【HC32F460开发板测评】…...
HTML---表单验证
文章目录 目录 本章目标 一.表单验证概述 二.表单选择器 属性过滤选择器 三.表单验证 表单验证的方法 总结 本章目标 掌握String对象的用法会使用表单选择器的选择页面元素会使用JQuery事件进行表单验证Ajax的概念和作用 一.表单验证概述 前端中的表单验证是在用户提交表…...
基于tomcat的JavaWeb实现
Tomcat服务器 免费,性能一般的服务器 安装配置 基于Java,故需要配置环境变量,新加系统路径JAVA_HOME,路径为jdk的主目录。 而后打开bin目录下的startup.bat文件出现如下窗口说明配置成功 idea继承tomcat服务器 使用java开发…...
AI时代编程新宠!如何让孩子成为未来的编程大师?
文章目录 一、了解编程的基础概念二、选择适合的编程工具三、激发孩子的兴趣四、注重基础能力的培养五、提供实践机会六、鼓励孩子与他人合作七、持续支持与鼓励《信息学奥赛一本通关》本书定位内容简介作者简介目录 随着科技的迅猛发展,编程已经从一种专业技能转变…...
Qt 中Json的构造和解析简单例子
概述: Qt中使用Json比较方便,不像纯C需要导入CJson RapidJson JsonCpp等第三方的库,主要使用到QJsonDocument、QJsonObject对象即可 1、如何构造一个json字符串 假如我们需要构造 {"cmd":"1001","data":{"content&q…...
CSS特性
小技巧:在调试工具中,css样式上看层叠,下看继承。 1、层叠性 相同的属性会被覆盖,不同的属性会叠加 2、继承性 3、优先级 基于不同种类的选择器的匹配规则。 通配符 < 标签 < 类选择器 < id选择器 < 行内样式 <…...
springcloud:3.1介绍雪崩和Resilience4j
灾难性雪崩效应 简介 服务与服务之间的依赖性,故障会传播,造成连锁反应,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。 原因 1.服务提供者不可用(硬件故障、程序bug、缓存击穿、用户大量请求) 2.重试加大流量(用户重试,代码逻辑重试) 3.服…...
实现定时器的两种方法:使用windows api定时器 和使用c++11/14 定时器
前言: 当我有一个开发需求,符合下面的条件 1.需要某个任务在程序中每隔一段时间就要执行一次,可能把这个任务封装成了一个函数。 2.这种需要定时执行的任务,有2个,3个....越来越多。 这个时候我们就可以考虑使用定时…...
H5:图像标签和路径
目录 一.前言 二.正文 1.图像标签 注意: 2.路径 Ⅰ.目录文件夹和根目录 Ⅱ.路径 三.结语 一.前言 本篇介绍有关标签和路径,关于图像标签我们来看看有什么需要注意的。 二.正文 1.图像标签 在HTML标签中,img标签用于定义HTML页面中的图像。 <im…...
AI学习(5):PyTorch-核心模块(Autograd):自动求导
1.介绍 在深度学习中,自动求导是一项核心技术,它使得我们能够方便地计算梯度并优化模型参数。PyTorch 提供了一个强大的自动求导模块(Autograd),它可以自动计算张量的导数得出梯度信息,同时也支持高阶导数计算。 1.1 概念词 在学…...
Grid-Based Continuous Normal Representation for Anomaly Detection 论文阅读
Grid-Based Continuous Normal Representation for Anomaly Detection 论文阅读 摘要简介方法3.1 Normal Representation3.2 Feature Refinement3.3 Training and Inference 4 实验结果5 总结 文章信息: 原文链接:https://arxiv.org/abs/2402.18293 源码…...
FaceBook获取广告数据
1、访问 广告管理工具 确认自己登陆的账号下面能看到户。 2、使用 图谱Api探索工具 生成用户短期口令 3、get请求(或者浏览器直接打开)访问: https://graph.facebook.com/v19.0/me?fieldsid,name, email&access_token{上一步生成的口令} 4、短期…...
Redis之十:Spring Data Redis --- CrudRepository方式
SpringData Redis CrudRepository方式 Spring Data Redis 的 CrudRepository 是 Spring Data 框架中用于提供基础 CRUD(创建、读取、更新和删除)操作的一个接口。在与 Redis 集成时,尽管 Redis 是一个键值存储系统,并没有像关系型…...
ESP32实战-打造智能红外遥控中枢
1. ESP32红外遥控中枢的硬件准备 第一次接触ESP32红外遥控功能时,我对着淘宝买来的红外接收头和LED发了半天呆。这些看似简单的小元件,要稳定工作其实有不少门道。先说接收端,市面上最常见的VS1838B红外接收模块,虽然标称工作电压…...
我不是狐狸,我是那Harness Engineering炙
Julia(julialang.org)由Stefan Karpinski、Jeff Bezanson等在2009年创建,目标是融合Python的易用性、C的高性能、R的统计能力、Matlab的科学计算生态。 其核心设计哲学是: 高性能:编译型语言(JIT࿰…...
信道估计实战:从LS、MMSE到LMMSE的性能演进与工程权衡
1. 信道估计:无线通信的"导航系统" 想象一下你在一个陌生的城市开车,GPS信号时强时弱。信道估计就像是通信系统中的GPS,帮助接收端"看清"信号传输路径上的各种变化。在无线通信中,电磁波经过反射、折射、衍射…...
前端性能排查实战:Chrome Network面板里Timing那7个阶段到底怎么看?
Chrome Network面板Timing分析实战:从指标到性能优化 页面加载缓慢时,Chrome DevTools的Network面板中的Timing指标就像犯罪现场的指纹,每个数字背后都隐藏着性能问题的真相。但面对Queueing、Stalled、TTFB这些专业术语,很多开发…...
【Agent-阿程】OpenClaw v2026.4.10版本更新内容详解
【Agent-阿程】OpenClaw v2026.4.10版本更新内容详解一、版本更新概览1.1 更新分类统计二、框架级更新详解2.1 Codex集成架构重构2.2 Active Memory记忆系统三、功能级更新详解3.1 macOS Talk Mode MLX支持3.2 视频生成Seedance 2.03.3 Microsoft Teams消息操作3.4 QA基础设施增…...
C#怎么操作文件复制移动删除 C#如何用File和FileInfo类复制移动重命名和删除文件【基础】
File.Copy 默认不覆盖目标文件,会抛出 IOException;需显式传入 true 参数才覆盖,但只读文件仍可能失败。File.Copy 会覆盖目标文件吗?默认不报错但要小心File.Copy 默认遇到同名目标文件会直接抛出 IOException:“目标…...
终极指南:如何使用BOTW存档编辑器定制你的海拉鲁冒险
终极指南:如何使用BOTW存档编辑器定制你的海拉鲁冒险 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 你是否曾在《塞尔达传说:旷野之息》的…...
DHT温湿度传感器高精度驱动设计与工程实践
1. DHT系列温湿度传感器驱动库深度解析与工程实践DHT系列传感器(DHT11、DHT22、AM2302)是嵌入式系统中应用最广泛的低成本数字温湿度传感方案之一。其单总线异步通信协议、无需外部上拉电阻(部分型号)、宽工作电压范围(…...
2026奇点智能技术大会核心洞察(工具链调用能力已成大模型商用分水岭)
第一章:2026奇点智能技术大会:大模型工具调用 2026奇点智能技术大会(https://ml-summit.org) 工具调用范式的根本性跃迁 2026奇点智能技术大会首次系统性定义了“意图对齐型工具调用”(Intent-Aligned Tool Calling, IATC)协议&…...
使用PDF-Extract-Kit-1.0构建文档问答系统
使用PDF-Extract-Kit-1.0构建文档问答系统 1. 开篇:当PDF文档遇上智能问答 你有没有遇到过这样的情况:手头有一大堆PDF文档,需要快速找到某个特定信息,却不得不一页页翻找?或者需要从大量技术文档中提取关键知识点&a…...
