在实现了函数之后,必须去调用它,它才会运行 。
除了main函数是被shell启动的,其他函数都要直接或间接被main函数调用 。
某一个函数在运行时 , 实际是存在一条从main函数到它的调用链的 。
函数调用的语法是:
函数名(实参变量0, 实参变量1);
如果有多个实参,则以逗号隔开 。如果要接收函数调用的返回值,可以用一个变量去接收:
返回值变量 = 函数名(实参变量0, 实参变量1);
返回值变量的类型 , 要与函数的返回值类型一致 , (返回值变量)在使用之前要先声明 。
对于有返回值的函数,也可以不接收它的返回值 。例如,printf()虽然有个int类型的返回值,用于表示打印了多少个字符,但一般不接收它 。
所以C语言的入门代码都是printf("hello world\n");
而不是int ret = printf("hello world\n");
函数名 , 在C语言中属于标志符(identity) 。
标志符的命名规则是,以下划线或大小写字母开始 , 之后可以跟数字、字母、下划线,(但不能跟运算符或其他特殊符号) 。
它们在代码中用于表示变量名、结构体类型名、函数名,或者给goto使用的标号 。
基本类型的类型名 , 都被定义为了关键字,不能再用作标志符 。
struct S {
int a;
int b;
} s;
S是标志符,表示结构体类型S 。
a是标志符,表示结构体的成员变量a 。
s是标志符,表示变量s , 它的类型是结构体类型S 。
函数名,也属于标志符,所以函数名也要以下划线或大小写字母开始,不能是关键字、运算符、或其他特殊符号 。
0123,这不能做函数名,C语言的以0开始的数字是八进制数字 。
0x123,也不能做函数名 , 以0x开始的数字是16进制的数字 。
main,可以做函数名,这是主函数 , 在整个程序里只能有一个,不能作为普通函数的名字 。
__schedule,以下划线开始,可以做函数名 。
不过,以两个下划线开始的函数,大多是Linux系统或C库的函数 。普通函数最好别这么命名 。
char,这不能做函数名,它是字符类型的关键字 。
+,这也不能,它是表示加法的运算符 。
CreateWindowEx,这可以做函数名,一看就是典型的匈牙利风格,微软的代码(笑) 。这个函数是windows系统上创建窗口的API 。
匈牙利风格的代码 , 是从微软开始流行的一种风格,函数名以一个或多个英文单词命名 , 每个单词的首字母大写,其他字母小写 。
不过Linux的代码(包括第三方的软件),还是保持上古C代码的那种下划线风格 , 全部字母小写,单词之间以下划线分割,而且多使用缩写 。
有时候,缩写之后只剩下几个字母,就直接新组一个词当函数名了 。
例如,Linux上启动新程序的函数execve(),就是个缩写的单词 。
执行的英文单词叫execute , windows上的可执行程序叫exe文件,就是这个词的前3个字母,Linux也选了这三个字母 。
cve这三个字母,来自完整的main函数的参数列表:
int main(int argc, char* argv[], char* envp);
main函数的完整声明是上面这个样子的,int main()这个是简化版的 。
其中第一个参数argc,表示要传给main函数的参数个数 。通过命令行参数的形式传递 。arg是参数argument的缩写,c就是count , 即参数个数 。
argv , 是(传给main函数的)参数字符串的数组,v指的是vector 。
envp,是环境变量的路径,environment path 。
所以,启动main的系统调用就叫作execve()了,而不叫StartProgram() 。
推荐阅读
- 抖音直播卖货投抖币管用吗,直播带货投抖+到底有没有用
- 新媒体群如何运营,如何理解新媒体运营
- 视频拍摄主题是什么意思,视频拍摄主题怎么写
- 斗鱼直播插画,斗鱼直播插画怎么弄
- php数据库多表查询 php如何操作数据库
- 代码自动生成器java,代码自动生成器手机版下载
- oa办公系统asp.net,OA办公系统按计算机应用的类型分
- 笔记本电脑盒子看电视直播,电视盒子连接笔记本电脑看电视直播
- c语言map构造函数 c语言中map函数