学习C语言第三天

欢迎使用C语言

C判断

判断结构要求指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
判断语句有if语句;if…else语句;嵌套if语句;switch语句;嵌套switch语句。
最方便判断输入的整数是奇数还是偶数:
(num%2==0)?printf(“偶数”):printf(“奇数”);

switch与if的区别

首先说的是switch的用法:先计算switch()中表达式的值,再逐个跟case后常量表达式进行比较,若等于某一个常量表达式,则从这个表达式后的语句开始执行,如果没有break语句,就继续执行后面所有case后的语句;若一直不等,则执行default后的语句。
与if语句的不同:if语句中若判断为真则只执行这个判断后的语句,执行完后就跳出if语句,不会执行其他if语句;
而switch语句不会再执行判断位真后跳出循环,而是继续执行后面所有的case语句。

循环类型

C语言提供的循环类型有:while循环,for循环,do…while 循环,嵌套循环。

循环控制语句

循环控制语句可以改变代码得执行顺序,可以实现代码得跳转。
循环控制语句有break语句,continue语句,goto语句。
break语句会跳出本轮循环,执行下一个循环。
continue语句,会跳过本次循环,接着执行本轮循环。
goto语句,将控制转移到被标记的语句。

extern

extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的(概述性理论)。当使用 extern 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置

当有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时,可以在其他文件中使用 extern 来得到已定义的变量或函数的引用。可以这么理解,extern 是用来在另一个文件中声明一个全局变量或函数
extern 修饰符通常用于当有两个或多个文件共享相同的全局变量或函数。

C函数

函数是一组一起执行一个任务的语句。每个C程序都至少有有一个函数,即主函数main(),其他函数的程序都可以定义其他额外的函数。
在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。
函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主题。
C标准库提供了大量的程序可以调用的内置函数。

定义函数

在C语言中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:
返回类型:一个函数可以返回一个值。如 int main中int是函数返回值得数据类型。有些函数执行所需的操作做而不返回值的关键词void。
函数名称:这是函数的实际名称。函数名和参数列表一起够成了函数签名。
参数:参数就像所示占位符。当函数被调用时,向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,函数可能不包含参数。
函数主体:函数主体包含一组定义函数执行任务的语句。

函数声明

函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
函数声明包括以下几个部分:
返回的类型 函数的名字(参数列表 变量类型 变量)
在函数声明中,参数的名称并不重要,只有参数的类型是必需的,如int main(int,int);
当在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。在这种情况下,在调用函数的文件顶部声明函数。

扫描二维码关注公众号,回复: 12901488 查看本文章

调用函数

创建C函数,定义函数做什么,然后通过调用函数来完成已定义的任务。
当程序调用函数时,程序控制权会转移给被调用的函数,被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权还给主程序。俗称函数的跳转。
由于程序是从上向下执行,一般文档中函数要先声明,后调用。
调用函数时,传递所需参数,如果函数返回一个,则可以存储返回值。

函数参数

如果函数要使用参数,则必须声明接受数值的变量。这些变量称为函数的形式参数。
形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。

当调用函数时,有两种向函数传递参数的方式:传值调用,引用调用。

传值调用:该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。这意味着函数内的代码不会改变用于调用函数的实际参数。

引用调用:通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。
传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问。//相当设为变量供用户调用

函数的划分

根据函数能否被其他源文件调用,将函数分为内部函数和外部函数。

内部函数

如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。
形式 static 类型名 函数名(形参表)
内部函数又称静态函数。使用内部函数,可以使函数的作用域只局限于所在文件。即使在不同的文件中有同名的内部函数,也互不干扰。提高了程序的可靠性。

外部函数

如果在定义函数时,在函数的首部的最左端加关键字extern,则此函数时外部函数,可供其它文件调用。
如函数首部可以为
extern int min(int a,int b)
C语言规定,如果在定义函数时省略extern,则默认为外部函数。
在需要调用此函数的其他文件中,需要对此函数作声明(即使在本文件中调用一个函数,也要用函数原型来声明)。在对此函数作声明时,要加关键字extern,表示该函数是在其他文件中定义的外部函数。

内联函数

内联函数时指用inline关键字修饰的函数。在类内定义的函数被默认成为内联函数。内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。
内联扩展是用来消除函数调用时的事件开销,它通常用于频繁执行的函数,对于小内存空间的函数非常受益。
1.使用内联函数的时候要注意:
2.递归函数不能定义为内联函数
3.内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数。
4.内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。
5,。对内联函数不能进行异常的接口声明。

函数的划分

main函数其实与手写的函数区别不大,它有自己的参数。
argc和argv是main函数的形式参数。
这两个形式参数的类型是系统规定的。如果main函数要带参数。就是这两个类型的参数;否则main函数就没有参数。
变量名称argc和argv是常规的名称,当然也可以换成其他名称。在传入参数后main函数收到参数后就会,接着函数体继续运行。C程序在编译和连接后,都生成一个exe文件,执行该exe文件时,可以直接执行。
1.可执行文件名称和所有参数的个数之和传递给argc;2.可执行文件名称(包括路径名称)作为一个字符串,首地址被赋值给argv[0],参数1页作为一个字符串,首地址被赋给argv[1],…以此类推。

函数声明和函数原型的参数名可以不一样,编译器只想知道的函数参数的类型,与函数参数的名字没有关系。编译器只要检查到函数返回类型,名称和参数类型正确即可。

函数实现了代码的重用,大大简化缩短了程序员的工作量,更使得程序的可读性大大提高,函数的递归调用更是一种简化程序代码的方法;递归调用其实是函数自己调用自己。
递归代码少,但是递归也有缺点,递归占用的内存要比递推大,而且时间也要比递推长。

占位符

占位符就是先占住一个固定的位置,等着再往里面添加内容的符号,广泛用于计算机中各类文档的编辑。
格式占位符(%)是在C/C++语言中格式输入函数,如scanf、printf等函数中使用。其意义就是起到格式占位的意思。表示在该位置有输入或者输出。
%d,%i 代表十进制的整数
%f 单精度浮点浮点
%lf 双精度浮点
%s 字符串(配用指针),读入一个字符串,遇空格、制表符或换行符结束。
%c char
%p 读入一个指针
%fL 长long
%e 科学计数
%g 小数或科学计数
%a,%A 读入一个浮点值(仅C99有效)
%c读入一个字符
%o 读入八进制整数
%x,%X 读入十六进制整数
%u 读入一个无符号十进制整数
%f,%F,%e,%E,%g,%G用来输入实数,可以用小数形式或指数形式输入。
%n至此已读入值的等价字符数
%[]扫描字符集合
%%读取%符号

猜你喜欢

转载自blog.csdn.net/qq_31932681/article/details/94401133