深入理解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 ...
随机推荐
- 使用 Firefox (火狐)浏览器 必开的配置
首先,在网址输入框中输入 about:config 进入浏览器配置页面 设置打开书签的时候在新标签页打开 然后搜索 browser.tabs.loadBookmarksInTabs 并将它的值改为tr ...
- 京东携手HarmonyOS SDK首发家电AR高精摆放功能
在电商行业的演进中,商品的呈现方式不断升级:从文字.图片到视频,再到如今逐渐兴起的3D与AR技术.作为XR应用探索的先行者,京东正站在这场体验革新的最前沿,不断突破商品展示的边界,致力于通过创新技术让 ...
- Atlas启动报错:Caused by: org.apache.solr.common.SolrException: Cannot connect to cluster at xxx.com:2181: cluster not found/not ready
Atlas启动时报以下错误,看情况是atlas没有在zk上找到solr注册信息:然后发现solr启动命令bin/solr start -force会默认使用内置的zk,不会往公共zk上面注册: 解决方 ...
- JavaScript面试题,为什么[] + 0 = '0', 而{} + 0 = 0?
介绍 昨天在网上看到一道面试题,是关于JavaScript中的+元算符的,如下: [] + 0 = ? {} + 0 = ? 要解决这道题,我们首先要了解JavaScript中+运算符的行为,+元算符 ...
- 前端开发系列086-Node篇之require
本文主要介绍require对象(函数)的结构,使用方法和注意点,对模块和CommanJS规范等内容不进行展开. 一.require函数 在Node中,所有的文件都被认为是一个模块.根据来源的不同,我们 ...
- screen 相当于 浏览器的多标签.简单使用说明
简介:screen 相当于 浏览器的多标签. 转载: CSDN 个人常用命令 screen -ls 显示所有视窗 杀死视窗 kill -9 threadnum 例如在上面的2637,kill -9 2 ...
- leetcode 224
简介 简易计算器 一时半会儿没写出来,看了官方题解. 感觉思路是遇到 ( 前一个操作符号,入栈,遇到 ) 栈中弹出操作符号 遇到 + 符号为栈顶符号 遇到 - 符号为 栈顶符号的反符号 官方使用栈来保 ...
- MFC 不是类或命名空间名称
简介 好恶心啊MFC,为什么自定义类要收#include "stdafx.h"的约束 这个一定要放在第一行. GUESS 可能是为了加速编译的速度.不过也太恶心了吧.加速编译应该是 ...
- bt-cloud安装指南
1.安装PHP7.4 sudo apt update -y && upgrade -y sudo apt install php7.4-common php7.4-zip php7.4 ...
- SciTech-BigDataAIML-BP(BackPropagation反向传播)网络:“政经驱动”智慧星球城市的“BigData+Bitstream”+Org组织+“数学驱动”的“人+模型”
SciTech-BigDataAIML-BackPropagation反向传播: "政治经济驱动"智慧星球城市的"BigData+Bitstream" &quo ...