函数的补充
来源:互联网 发布:张国荣最冷一天知乎 编辑:程序博客网 时间:2024/06/05 15:30
带参数的函数(值传递)和有返回值的参数
1.
函数的参数:
语法:
void 函数名(类型形参名){
函数体;
}
函数的参数可以有多个,如果有多个的时候用,隔开
例:
void 函数名(类型形参名1,类型形参名2,………………){
函数体;
}
注意:1.函数如果有参数,那么你调用的时候必须给它传参数,而且要按照对应的顺序和个数去传
2.函数的形参就是函数括号里面定义的变量,就相当于在函数内部定义了这个变量的局部变量,所以不能在函数内再定义同名的变量
3.调用函数的时候,给形参传值,就相当于给形参进行赋值,所以如果是基本数据类型不匹配的时候会发生强制转换
#include <stdio.h>/** * 函数的参数,这个参数需要一个int类型的数字 * */void isOuNumber(int num){//int num就是一个局部变量 if (num % 2 == 0) { printf("%d是偶数\n",num); }else{ printf("%d是奇数\n",num); } }//写一个计算两个数之和的函数void getSum(int num1,int num2){ printf("%d+%d=%d\n",num1,num2,num1+num2);}void test(char ch,int num2){ printf("%c %d\n",ch,num2);}int main(int argc, const char * argv[]) { // isOuNumber();//因为你的函数是一个有参数的函数,那么不能直接调用 isOuNumber(21); // getSum(10,20); test('a',90.3); return 0;}
2.
有一个函数,可以帮我们计算两个数之和
我是想你帮我算好,让我直接可以拿到结果,而不是你帮我打印出来
那么,问题来了?怎么样拿到结果
就需要用到函数的返回值!
语法:
返回值类型 函数名(参数列表){
函数体;
return 返回值;
}
void意思:空,就代表不需要返回值
函数要有返回值,就在函数定义的时候就在返回值类型写上你要返回的类型
#include <stdlib.h>int getSum(int num1,int num2){ int sum = num1 + num2; // printf("%d\n",sum); return sum;}int main(int argc, const char * argv[]) { // int abcd = getSum(15,20);// // printf("abcd=%d\n",abcd); // int sum2 = sum + 30; // printf("%d\n",getSum(15, 20)); //系统提供的函数带的有返回值?// int num = arc4random_uniform(10); int res= getSum(39, 28); printf("%d\n",res); printf("%d\n", arc4random_uniform(10)); printf("程序结束了\n"); return 0;}
带返回值的函数需要注意的地方:
1.如果函数有返回值,我可以接收,也可以不接收,不管接没接收函数都有执行
2.接收返回值的时候,需不需要用同类型的变量来接收函数的返回值类型
基本数据里面,可以不用同类型,但是会发生强制转换
推荐以后不管怎么样,用来接收返回值的变量一定要与函数的返回值类型一致
3.返回值类型确定了,那么能返回不同类型的数据吗?
基本数据类型中可以
也不推荐这么做
4.当函数需要返回值的时候,必须保证每条分支都有返回值,否则会报错
3.函数的声明:
编译器是从上往下依次编译,当编译到你的函数的时候,还没有你实现的函数,所以会报错
所以如果想要函数不报错,就需要声明函数
声明的意思:
告诉编译器,我有这个函数,你放心的编译就行了
声明的语法:
返回值类型函数名(参数列表);
例:void test();
小技巧:
直接对着函数头复制,然后在后面删掉大括号,加上分号就完了
声明几个注意事项:
1.函数的声明可以写在任意位置,但是一定要写在调用这个函数之前
2.函数的声明可以写N个
3.声明函数的时候,形参名可以省略
4.如果函数的返回值是int,也可以不用声明(仅限Mac下),建议大家无论什么函数都先声明
4.注意点:
函数需要注意的地方:
1.函数内不允许定义新的函数
2.函数内可以声明其他函数
3.函数可以调用其他的函数
4.函数不允许重名
#include <stdio.h>void test(){ printf("test\n"); void test2(); test2();}void test2(){ printf("test2\n");}int main(int argc, const char * argv[]) { test(); return 0;}
- 函数的补充
- Js_函数的补充
- 构造函数的补充
- 对compare函数的补充
- 关于SHFileOperation函数的补充
- 函数补充
- 函数补充
- 关于session的几个补充函数
- 关于session的几个补充函数
- 补充上一篇的精度处理函数
- 对windows互锁函数的补充
- 对于strtok函数的补充说明
- 字典用法的补充—index函数
- Matlab对bwmorph函数的一些补充
- VC++中Format函数详解的补充
- 常用的 Underscore函数 记下随后补充
- c::关于虚函数的一点补充
- 关于自执行函数的补充
- SSH框架总结
- javaSE(10)(Map集合)
- Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
- An Overview of Tomcat 6 Servlet Container : Part 1
- iptables的技术
- 函数的补充
- An Overview of Tomcat 6 Servlet Container: Part 2
- NYOJ 1099 Lan Xiang's Square (判断是否为正四边形)
- iOS中使用ZBar扫描二维码自定义扫描界面
- android gifj加载
- 使用《UrlHash/锚点》解决移动设备中的单页面应用的物理[返回键]带来的困扰
- NDK
- Hbase快速开始——shell操作
- 解决 IOS9.0 调用qq2.91SDK登录 只显示web页面而不能调用客户端登录的问题