C/C++教程

【学习打卡】第1天 C语言函数结构

本文主要是介绍【学习打卡】第1天 C语言函数结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称: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++的重要区别。

那么是函数原型呢,就是给函数的输出输出一个定义,也就是是声明,于定义函数输入输出的类型,只关心参数和返回值的类型,函数的实现在哪都无所谓,声明主要表明:

  1. 函数名
  2. 函数返回值类型,如果没有,默认为
  3. 函数的参数列表,参数顺序,参数类型

变量类型和作用域(Compiler Explorer 查看汇编)

  • block scope : 大括号括起来的作用域
  • function scope: : 函数内的作用域
  • function prototype scope: 函数声明内形参的定义域,如
    double Sort(int size, int array[size])
  • file scope :写在整个文件里,在整个文件都是全局的定义域,而经典 static 的变量也是具有文件作用域的。

staticauto 是对立的:

图片描述

其中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);

}

课程收获

  1. 对之前不理解的函数定义,如auto、register、static 属于变量类型,了解的更清楚,如什么是文件定义域。
  2. 对ide 中自动检查的功能,再就是 compiler explorer 有了更清楚的了解。
  3. 知道了变长参数的写法,其实也没多好用,但是了解了部分机制。

图片描述

这篇关于【学习打卡】第1天 C语言函数结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!