课程名称:C语言系统化精讲 重塑编程思想 打造坚实的开发基础
课程章节:第四章 函数与程序结构
授课老师:bennyhuo
其实程序语言很多特点都与数学一致,函数也不例外。
C语言中的函数输入一般为形式参数,而书写形式则为
<return type> <name> (<parameter>){ ...statement return <return value>; }
而值得注意的是,Clion 为编写函数名称或变量名称提供了一系列命名法规范可供选择。
于 Editor > C/C++ > Naming Convention 中:
如其中的函数命名即为 Pascal Case
如果想获取不一致的提示,可以点击右上角的小绿勾,在General
中将 Inconsitent
勾选上,可能是太耗性能,所以默认是关的。打开后 如 f(int a)
这种便会用波浪线提示。之后使用 alt + enter
便可以校正回来。
最后就是变量命名应该明确意义,除非你参加国际 C 语言混乱大赛。
C 语言中函数定义如果什么参数都不要,那么记得写void
,
而不写是另一重含义,即什么参数都无所谓。
而C++ 不写则默认为void,这是C 和 C++的重要区别。
那么是函数原型呢,就是给函数的输出输出一个定义,也就是是声明,于定义函数输入输出的类型,只关心参数和返回值的类型,函数的实现在哪都无所谓,声明主要表明:
double Sort(int size, int array[size])
static
的变量也是具有文件作用域的。而 static
和 auto
是对立的:
其中non-static 在未初始值的情况下是一个乱码,在msvc下不初始化会报错。
而static 未初始化,也会有个初值,即 0。
而gcc 不初始化则会出非常多叉子,可能会赋上一个上次的栈里的值。
总之 auto – 块作用域 、statci – 文件作用域 、register – 加速操作
使用argc (argument count), 指示数量,使用… 指代变长参数。
void HandleVarargs(int arg_count , ...){ // 1. 定义 va_list va_list args; int i; // 2. 开始遍历 va_start(args, argc); // 3.取出对应参数 for (int i = 0; i <argc; ++i){ int arg = va_arg(args, int); printf(" %d : %d \n" ,i, arg); } //4. 结束遍历 va_end(args); }