深入理解C语言---函数
“在这个怀疑的时代,我们需要信仰”
C语言作为比较底层的语言,从来不只是语法的堆叠,“深入理解C语言”这个专栏,会写点关于“函数,数组,字符串,指针,结构体”的个人理解,希望能对大家有些帮助~
一.什么是main函数?
1.两种定义形式
int main( void )--无参数形式
{
...
return 0;
}
int main( int argc, char *argv[] )--带参数形式
{
...
return 0;
}
注意:main函数的返回值为整数,如果你写 return 9.9,会返回9(强制类型转换)
2.main函数的参数
argc:argument count,记录命令行中的字符串数
*argv[]:一个指向字符串的指针数组。命令行中的每个字符串被存储到内存中,并且分配一个指针指向它。系统使用空格把各个字符串格开。一般情况下,把程序本身的名字赋值给argv[0],接着,把最后的第一个字符串赋给argv[1],等等。
想了解更多,请看:https://www.cnblogs.com/xdshennju/archive/2012/01/23/2328992.html
3.main函数的作用
简单来说:进行程序与操作系统之间的交互,让代码真正“跑起来”
请看:https://www.cnblogs.com/wuseng/p/18488785
二.自定义函数
1.函数的定义与声明
声明格式:
返回值类型 名称()
在标准C语言中,函数的定义顺序是有讲究的,默认情况下,只有后面定义的函数才可以调用前面定义过的函数
如果想把其他函数的定义写在main函数后面,而且main函数能正常调用这些函数,那就必须在main函数前面作一下函数的声明
1 // 只是做个函数声明,并不用实现
2 int sum(int a, int b);
3
4 int main()
5 {
6 int c = sum(1, 4);
7 return 0;
8 }
9
10 // 函数的定义(实现)
11 int sum(int a, int b) {
12 return a + b;
13 }
只要你在main函数前面声明过一个函数,main函数就知道这个函数的存在,就可以调用这个函数。究竟这个函数是做什么用,还要看函数的定义。如果只有函数的声明,而没有函数的定义,那么程序将会在链接时出错
三.库函数
C语言提供的库函数,例如stdio.h中的输出函数printf()和输入函数scanf()
写作不易,很吃功底(哭笑)
致谢:
b站-逊哥教你学计算机
https://www.cnblogs.com/mjios/archive/2013/03/13/2957628.html
https://www.cnblogs.com/xdshennju/archive/2012/01/23/2328992.html
https://www.cnblogs.com/wuseng/p/18488785
深入理解C语言---函数的更多相关文章
- 深入理解C语言函数指针(转)
本文转自:http://www.cnblogs.com/windlaughing/archive/2013/04/10/3012012.html 示例1: void myFun(int x); //声 ...
- 深入理解C语言-函数指针
函数指针在C++中有着重要的应用,函数的函数名其本质就是代表一个地址,这个地址叫做函数入口,得到这个地址就可以对这个函数进行各种操作. 函数类型基础 函数三要素: 名称.参数.返回值 C语言中的函数有 ...
- 通过实战理解C语言精要——函数篇
前言 本篇博客是对C语言函数部分的重点内容和细枝末节通过实战得到的经验的总结精炼,不涵盖C语言函数的全部内容,所有提炼内容均来自提炼与实战,阅读需要对函数部分有一定基础,可用于对C语言函数的理解提 ...
- C#委托与C语言函数指针及函数指针数组
C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...
- swift1.2语言函数和闭包函数介绍
swift1.2语言函数和闭包函数介绍 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护. swift1.2语言函 ...
- Swift 1.1语言函数参数的特殊情况本地参数名外部参数名
Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4 函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...
- 【转载】理解C语言中的关键字extern
原文:理解C语言中的关键字extern 最近写了一段C程序,编译时出现变量重复定义的错误,自己查看没发现错误.使用Google发现,自己对extern理解不透彻,我搜到了这篇文章,写得不错.我拙劣的翻 ...
- C语言函数指针基础
本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...
- 动态修改 C 语言函数的实现
Objective-C 作为基于 Runtime 的语言,它有非常强大的动态特性,可以在运行期间自省.进行方法调剂.为类增加属性.修改消息转发链路,在代码运行期间通过 Runtime 几乎可以修改 O ...
- 深入理解c语言_从编译器的角度考虑问题_纪念Dennis Ritchie先生
开源中国: Dennis Ritchie教授过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言.一门经历40多年的到今天还长盛不训的语言,今天很多语言都受到C的影 响,C++,Java,C ...
随机推荐
- 利用VBA批量删除Excel中的中文/英文/数字或者替换中英文符号
↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ 在Excel中经常会遇到去除所有的中文,英文或者数字等情况.但是由于Excel并不支持一次替换所有的中文,英文,数字等,所以有些 ...
- 【6】树的DFS序、直径、重心
前言 树上操作是 OI 重要的一环,树的 DFS 序.直径.重心这一堆东西也是树上操作的基础.树的 DFS 序可以把树上问题转化为区间问题,树的直径的性质经常是解题的关键,树的重心可以防止一些树上算法 ...
- POLIR-Society-Organization-Psychology-Color Theory:色彩理论 of IxDF(Interaction Design Foundation)
IxDF: https://www.interaction-design.org/literature/topics/color-theory Color Theory What is Color T ...
- Edu-Linguistic-English-IPA-英语发音:Vocal anatomy, muscles and function
https://web.uvic.ca/ling/resources/ipa/charts/IPAlab/IPAlab.htm https://www.internationalphoneticass ...
- Unity Hierarchy 视图图标绘制
using UnityEditor; using UnityEngine; [InitializeOnLoad] class UGUIOpenedPanelEditor { static readon ...
- 递推&递归思想(递归=逆向递推)
递归 = 逆向递推(本质是一致的) 递推 初始条件 + 递推式 格点法 格点法 对于数的计算:对于合法操作来说,本质上即可看作递推 递归 终止条件 + 递归式 将规模大的问题转化为形式相同但规模更小的 ...
- AI 是搭子不是替代者:我用大模型工具(cursor,trae)编程的一年经验总结
大模型 + Cursor 编程实践经验分享:AI 不是替代者,而是开发加速器! 从使用大模型编程至今,尤其是在 Cursor 编辑器 + AI 编程助手(如 GPT-4.1.Claude.Gemini ...
- Freemarker的时间相关
1.freemarker的时间转换 //标准日期转日期字符串 ${parameters.fieldDate?date} //标准日期转日期+时间 字符串 ${parameters.fieldDate? ...
- PostgreSQL View(视图)
View(视图)是一张假表,只不过是通过相关的名称存储在数据库中的一个 PostgreSQL 语句. View(视图)实际上是一个以预定义的 PostgreSQL 查询形式存在的表的组合. View( ...
- Android如何实现实时音视频会议的背景分割
1 背景分割功能简介 ZegoEffects SDK AI视觉SDK提供背景分割功能,适用于在线教育.视频会议.美发.短视频等多种场景. 2 视频中背景分割功能实现的前提条件 在使用 ZegoEffe ...