7.产生随机数
①函数:arc4random_uniform(x) 产生一个0到X之间的整数(包含0,不包含X);
②使用arc4random_uniform函数要先导入<stdlib.h>;
③产生m到n之间的随机数: arc4random_uniform(n-m+1)+m;
8.函数
①概述:C源程序是由函数组成的。用户可以把自己的算法变成一个个相对独立的函数模块,然后用调用的方法来使用函数,所以也把C语言成为函数式语言。
②分类
1) 从函数定义角度来看,可以分为 库函数 和 用户定义函数;
2) 语言的函数兼有其他语言中的函数和过程两种功能,从这个角度看,又可把函数分为 有返回值函数 和 无返回值函数;
3) 从主调函数和被调函数之间数据传送的角度,又可分为 无参函数 和 有参函数;
4) C语言提供了极为丰富的库函数,这些函数又可从功能角度作以下分类:
字符类型函数;
转换函数;
目录路径函数;
诊断函数;
图形函数;
输入输出函数;
接口函数;
字符串函数;
内存管理函数;
数学函数;
日期和时间函数;
进程控制函数;
其他函数;
③注意:
int n;
void xxx(int n) {
}
//此时有两个变量n,一个为全局变量,一个为局部变量。在函数xxx里面,会自动屏蔽全局变量n的作用域。
④参数:
1)定义函数括号后的参数叫形式参数,简称形参;
2)调用函数括号后的参数叫实际参数,简称实参;
3)定义函数后,不会立即为形参分配存储空间,在调用时才会分配;
4)定义函数的内部,不能定义与形参同名的变量;
⑤return
1)return 常量: return 0;
2)return 表达式: return a=5; return a>3;(返回1或0) return a+b;
3)如果函数返回值和函数定义的返回类型不一致,以定义的返回类型为标准;
4)如果返回值类型为整形,在定义函数时可省略不写,如sum() {};
⑥函数的声明
1)是为了告诉编译器这个函数已经存在了,告诉编译器函数返回值的类型;
2)声明函数: int max(int x,int y)或 int max(int,int);
3)如果函数的返回值类型为int,可以不用声明此函数;
4)如果函数写在main函数之前,也不用声明该函数;
5)全局函数声明:写在代码最前,其中所有地方都能使用这些函数;
⑦函数的调用
1)函数的调用可以成为另一个函数的实参; max(max(1,2),3);
2)函数名不能和变量名同名; int max = max(4,6); 错
⑧递归函数
1)一个函数在它的函数体内调用它自身称为递归调用;
2)为了防止递归函数无休止调用,在函数内部应该存在让递归结束的条件;
3)递归函数的存在条件:1.存在自己调用自己; 2.存在一个条件让递归结束(否则为死循环); 3.能够找到一个规律,让解决问题的规模缩小;
4)内存栈:先进后出; 递归是先压栈再出栈;
5)一个递归有递推阶段和迭代计算;
9.常见的unix命令
①MAC系统采用的是UNIX文件系统,所有的文件都放在根目录/下面,因此没有windows分盘概念,
因为MAC系统是基于UNIX系统,因此可以在“终端”中输入一些UNIX指令来操作Mac系统。
②常用的unix指令:
ls: 列出当前目录下的所有内容(文件\文件夹)
pwd: 显示出当前目录的名称
cd: 改变当前操作的目录
who: 现实当前用户名
clear: 清除所有内容
mkdir: 创建一个新目录
rm: 删除文件
rm -r: 删除文件夹 -f 强制删除
touch: 创建文件
vi /open: 打开、创建文件 -q 退出, -wq 保存并退出, -q! 强制退出 ,i 进入编辑模式,esc 退出编辑模式, :wq保存退出
cat/more: 都可以查看文件内容
方向键: 查看历史命令
③手动编译执行C程序:
touch hello.c -> 创建了一个C文件,然后写代码
cc -c hello.c -> 编译C文件,生成了hello.o目标文件
cc hello.o -> 连接库函数,生成了a.out输出文件A
./a.out -> 运行a.out文件,执行程序