iOS学习05C语言函数
本次主要是学习和理解函数,函数树状图如下:

1、函数的声明和定义
返回值类型 :函数的结果值类型,函数不能返回数组。
指定返回类型是void类型说明函数没有返回值。
函数名 :函数名命名规范和变量名命名规范一样。
参数列表 : 每个形式参数的前面说明其类型,即使几个参数具有相同的数据类型,也必须对每个形式参数分别进行类型说明。形式参数用逗号进行分隔,就算没有参数函数后面的()也不能省略,可以写成(void)。
函数体 :函数功能的实现。
返回值类型 函数名(参数类型 参数名,...) {
功能语句;
return 返回值;
}
返回值
一个函数只能有一个返回值。
,回到主调函数。
return后面的语句不再执行。
void test() {
printf("我在return语句之前");
return;
printf("我在return语句之后");//不执行
}
函数声明
函数声明:指的就是函数的描述,也叫函数原型。
函数声明:
1、函数定义出现在主调函数之前,可以省略函数声明。
2、函数定义出现在主调函数之后,需要提前声明函数。
函数声明尽管可以省略,从规范来讲,不要省略。
// 1.函数声明
int maxValue(int, int);
// 2.函数定义
int maxValue(int a, int b) {
return a > b ? a : b;
}
2、函数分类
库函数(系统提供好的函数,例如printf)
printf(“Hello Lanou\n”);
scanf(“%d”, &number);
strlen(string);
strcpy(string1, sthring2);
...
printf 输出函数, 用于输出一个信息
scanf 输入函数,用于从键盘输入一个信息
strlen 求字符串长度函数,用于求指定字符串的长度
strcpy 字符串拷贝函数,用于实现字符串复制
...
自定义函数(开发者自己写的函数)
void sayHello() {
printf("hello, 约吗?");
}
void printSum(int a, int b) {
int sum = a + b;
printf("sum = %d\n", sum);
}
int randomValue() {
return arc4random() % ;
}
int mulValue(int a, int b) {
int mul = a * b;
return mul;
}
3、函数调用
函数名();
对上面函数的调用
sayHello();
printSum(, ); int random = randomValue();
printf("random = %d\n", random); int mul = mulValue(, );
printf("mul = %d\n", mul);
4、形参实参
形参:形式上的参数,函数定义时使用的参数,以假名字来表示函数调用时需要提供的值,作用范围为整个函数范围。
实参:函数调用的时候传过去的参数值,出现在函数调用中的表达式。
5、函数嵌套
6、数组作为参数传递
数组作为参数是按地址传递的
数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参 数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。
// 定义函数,打印数组中所有的元素
void printArray(int a[], int count) {
for (int i = ; i < count; i++) {
printf("%d\n", a[i]);
}
}
int main(int argc, const char * argv[]) { // 数组作为函数参数
// 数组名是数组元素首地址 int array[] = {, , , , , };
int count = sizeof(array) / sizeof(int); printArray(array, count); return ;
}
7、作用域
变量作用域决定了变量的使用范围
局部变量
在函数内部定义的变量称为局部变量
作用域:从定义开始,到 ' } ' 结束
不同的函数中可以定义相同的变量,因为作用域不同
全局变量
在函数外部定义的变量称为全局变量
作用域:从定义位置开始,到文件结束
定义在主函数中,在其他.m文件中使用时,需要使用extern声明
iOS学习05C语言函数的更多相关文章
- iOS学习09C语言函数指针
本次主要学习和理解函数指针 1.函数指针 void printValue(int number) { printf("number = %d\n", number); } int ...
- C语言基础:函数指针 分类: iOS学习 c语言基础 2015-06-10 21:55 15人阅读 评论(0) 收藏
函数指针:指向函数的指针变量. 函数名相当于首地址. 函数指针定义:返回值类型 (*函数指针变量名)(参数类型1,参数类型2,....)=初始值 函数指针类型:返回值类型 (*)(参数类型1,参数 ...
- C语言基础:函数(Function) 分类: iOS学习 c语言基础 2015-06-10 21:48 14人阅读 评论(0) 收藏
函数:一段具有某些特定功能的代码段. 使用函数的严格规定: 1.函数声明 2.函数定义 3.函数调用 函数声明:告知系统编译器该系统的函数名,函数参数,参数类型,参数个数,参数顺序等等,以便函数调用时 ...
- C语言基础总结 分类: iOS学习 c语言基础 2015-06-11 10:08 23人阅读 评论(0) 收藏
//欲练此功必先自宫!!! //第一天:C语言的基础 //进制 //2进制, 10进制, 8进制, 16进制 //注:8进制数前加0, 16进制数前加0x ...
- 菜鸟学习-C语言函数参数传递详解-结构体与数组 分类: C/C++ Nginx 2015-07-14 10:24 89人阅读 评论(0) 收藏
C语言中结构体作为函数参数,有两种方式:传值和传址. 1.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数.在这种情况下 ...
- iOS学习06C语言结构体
1.结构体的概述 在C语言中,结构体(struct)指的是一种数据结构,是C语言中构造类型的其中之一. 在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名.年龄.身高 ...
- iOS学习04C语言数组
1.一维数组 数组:具有相同类型的成员组成的一组数据 1> 定义 元素:数组中存放的数据成为数组的元素 数组是构造类型,用{...}来给构造类型赋初始值,类型修饰符用来表示元素的类型 类 ...
- iOS学习02C语言分支结构
1. BOOL类型 返回值:真:YES 假:NO BOOL数据类型占一个字节的内存空间,占位符为%d. 计算机在识别时,YES就替换成1,NO就替换成0. bool是C语言中的布尔类型,返回值为tr ...
- C语言基础:数组 分类: iOS学习 c语言基础 2015-06-10 21:40 7人阅读 评论(0) 收藏
数组:是由一组具有相同数据类型的数据组合而来. 数组定义:元素类型修饰符 数组名[数组个数]={元素1,元素2....}; int arr[ 2 ]={1,2}; //正确 int arr[ ...
随机推荐
- wifi display代码 分析
转自:http://blog.csdn.net/lilian0118/article/details/23168531 这一章中我们来看Wifi Display连接过程的建立,包含P2P的部分和RTS ...
- 如何做好App的引导页?(转)
http://uedc.163.com/12264.html 当你第一次打开一款应用的时候常常会看到精美的引导页设计,它们在你未使用产品之前提前告知你产品的主要功能与特点,第一次印象的好坏会极大地影响 ...
- win10下安装Ubuntu + 修复Ubuntu引导
如何在已安装 Windows 10 的情况下安装 Linux(Ubuntu 15.04)双系统? - Microsoft Windows - 知乎http://www.zhihu.com/questi ...
- select * from salgrade for update和select * from salgrade for update nowait区别
1,select * from salgrade for update session1 session2 SQL> delete salgrade where grade=1; 1 row d ...
- c中malloc的用法
转自:http://blog.sina.com.cn/s/blog_966f8e8501010if7.html Malloc 向系统申请分配指定size个字节的内存空间.返回类型是 void* 类型. ...
- linux文本模式下使用PPPOE拨号ADSL上网的方法
转自:http://www.myzhenai.com.cn/post/945.html 转载请注明出处:http://www.myzhenai.com/thread-15431-1-1.html ht ...
- 在Asp.Net MVC中用Ajax回调后台方法
在Asp.Net MVC中用Ajax回调后台方法基本格式: var operData = ...; //传递的参数(action中定义的) var type = ...; //传递的参数(action ...
- HDU 3341 Lost's revenge(AC自动机+DP)
Lost's revenge Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)T ...
- 如何安装Ecshop for linux
下载 http://update.shopex.com.cn/version/program/ECShop/download_ecshop_utf8.php 解压缩之后把upload文件夹中的内容放到 ...
- 如果 if - 迈克.杰克逊的墓志铭
引用http://www.duwenzhang.com/wenzhang/yingyuwenzhang/20110215/171059.html IF you can keep your head w ...