------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
黑马程序员-iOS基础-C语言基础(三)
流程控制及函数
一、流程控制
代码流程控制的三种结构:顺序结构、选择结构、循环结构
顺序结构:默认的流程结构。按照书写顺序执行每一条语句。
选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
循环结构:在给定条件成立的情况下,反复执行某一段代码。
二、选择结构
分类:if、switch
1)if
结构:
a.if(条件){ }
b.if(条件){ }
else{ }
c.if(条件1){ }
else if(条件2){ }
else if(条件3){ }
else if(条件4){ }
else{ }
d.if(条件)
使用注意:
1.判断条件可以只是数字
2.比较大小时,常量值放在左边,变量放右边
如:a==0有时会被误写为a=0,造成永远出错,建议写0==a,因为0=a将永远无法成立,起到纠错作用
3.注意赋值运算符不要写两个=
4.if条件后不要打分号
5.作用域必须明确,if后面的语句必须用大括号
if结构的特点:同一时刻只有一个大括号里的代码会被执行.
2)switch
结构:
switch(数值)
{
case 数值1: 语句1; break;
case 数值2: 语句2; break;
default: 语句3; break;
}
特点:
1.默认情况下,只有一个case后面的代码会被执行
2.如果case后面没有break,并且这个case成立
就会按顺序执行后面所有case中的语句,直到遇到break为止
3.如果要在case后面定义新变量,必须用{}包住
3)if和switch的区别和联系
1.if语句能完成的功能,switch不一定能完成
2.部分情况下,if和switch可以互换
3.switch能完成的功能,if都能完成
三、循环结构
分类:while/do while/for
1)while
格式:while(表达式) {循环体}
1.确定要重复执行的操作
2.确定约束条件
特点:
如果一开始条件就不成立,永远不会执行循环体
如果条件成立,就会执行一次循环体
执行完毕,再次判断条件是否成立
使用注意:
死循环
while条件后写分号
2)do while
格式:do{循环体}while(表达式);
特点:先执行一次循环体,再判断条件
其他与while相同
3)for
格式:格式:for(语句1;条件;语句2){循环体}
执行顺序:语句1,初始化语句=>条件=>循环体(条件成立执行,否则跳出循环)=>语句2,增量语句=>再次判断条件=>。。。
使用注意
1>死循环 for(;;);
2>for循环体内部变量的作用域
3>作用域混淆
如:for (int i = 0; i<5; i++) int a = 10; 编译会产生错误
while循环和for循环的比较
1.可以互换
2.for循环的变量可以及时回收
3.优先for,再while,最后do while
4)continue和break
continue:结束本次循环,继续下一次循环.使用场合:循环结构
break的使用:某次的时候停止循环.使用场合:switch:退出整个switch语句;循环:退出整个循环.
三、函数
函数的定义:由一个或多个代码段构成的,每个程序段都有自己的功能,这些程序段就称为“函数”
1)定义函数
目的:把常用功能封装起来方便使用
组成:函数名,函数体
什么时候定义:添加一个常用的新功能
格式:
返回值类型 函数名(形式参数列表)
{
函数体
}
步骤:
1.根据函数的作用起一个有明确意义的函数名
2.确定函数的形参个数
3.确定函数的返回值
注意:默认情况下,C语言不允许两个函数名称相同
2)形参和实参
形参:函数定义时,写在函数参数列表中的变量
函数体内部不能定义和形参一样的变量
实参:函数调用时传入的具体变量
实参个数必须与形参一样
注意:
基本数据类型做函数形参是值传递
修改函数内部形参的值对原实参不影响
一个函数可以没有形参,也可以有无限多个形参
传指针结果会不一样
3)返回值return
作用
1.退出函数
2.返回一个具体值给函数调用者
注意
函数可以没有返回值
void修饰的函数可以省略return
可以多次使用return
当使用void修饰函数时return后面不能有其他语句
函数的弱语法
如果没有写返回值类型,默认是int
如果写了返回值,可以不返回
调用一个没有定义过的函数如果先进行函数声明是可以编译成功的
4)函数注意点
1.默认情况下不允许函数重名
2.函数不能嵌套定义
3.编译从上到下,写的函数要放在main函数前或者写函数声明
函数不能重复定义,但可以重复声明
如果有函数声明,没有函数定义
编译可以通过,因为编译器只检测语法是否合理,不会检测函数有没有定义
链接会报错,因为链接时会检测函数是否定义
5)#include
.h 头文件header file
作用
纯文本拷贝文件里的所有内容到include所在的位置
使用相对路径/绝对路径
注意
自己写的文件用""
系统自带的文件用<>
#include <stdio.h>的作用:拷贝相关函数的声明
6)多文件团队开发
链接:把项目中所有相关联的.o文件、C语言函数库合并在一起,生成可执行文件
1.函数定义放.c文件,声明放.h文件
2.如果要使用某个.c文件中定义的函数,只需要#include这个.c文件对应的.h文件
3..h文件的作用:被别人拷贝。编译链接时不需要考虑.h文件
7)main函数
返回值:0,正常退出;1,异常退出
8)printf函数
返回值:字符串的字符数长度
\n占一个字符
一个中文占3个字符
9)转义符
\n 换行
\t tab
\"代表一个双引号,不起作用
\+标点符号代表输出该符号,将会去掉该符号原有的作用