本节开始说函数。

一、函数的基本用法 

/*
作用:可以实现代码的复用,在一定程度上解决代码冗余的问题;方便后期维护。
语法:
void 函数名(){
函数体;
}
函数命名要有意义,遵守驼峰命名法。起名要有意义,要做到看到函数名就知道函数体有什么作用。
*/
//例如:
void printfMsg(){
printf("哈哈哈哈。");
} int main(int argc,const char * argv[]){
printfMsg();
return ;
}

二、带参数的函数

/*
带一个参数的函数:
语法:
void 函数名(类型 形参名){
函数体;
}
*/
//例如:
void printfNumber(int num){
printf("传入的参数为:%d \n",num);
} int main(int argc , const char * argc[]){
printfNumber();
return ;
} /*
带多个参数的函数:
语法:
void 函数名(类型 形参名1,类型 形参名2){
函数体;
}
*/
//例如:
void printfNumber(int num1,int num2){
printf(" %d * %d = %d \n",num1,num2,num1*num2);
} int main(int argc , const char * argc[]){
printfNumber(,);
return ;
}
/*传多个以此类推。*/

注意:1、函数如果有参数,调用该方法的时候,必须按照对应的顺序和个数给它传参数,否则会报错。

2、函数的形参相当于在函数内部定义的局部变量,所以就不能在该方法中定义同名变量。

3、调用函数的时候,给它传递参数,就相当于给形参赋值,如果形参和传参都是基本数据类型,当类型不匹配的时候,会发生强制转换。

引出两个概念。

形参:函数内定义的变量。

实参:调用函数时传过去的值。

注意:当函数的参数是基本数据类型的时候,在函数里改变了形参的值,不会影响到实参。

三、带返回值的函数

/*
比如:写一个函数来计算两个数字的加减乘除的结果,直接在函数中输出,这样做有点不太合适,也有点怪怪的,所以就需要函数给我们一个返回值。
语法:
返回值类型 函数名(参数列表){
函数体;
return 返回值;
}
注意:1、如果函数有返回值,可以选择接收和不接收,不会影响函数的执行。
2、如果返回值是基本数据类型,在接收的时候,可以使用其他基本数据类型的变量来接收,但是会发生强制转换,所以不推荐这样做。
3、在基本数据类型中,返回值的类型可以和函数定下的返回值类型不同,但是也会发生强制转换,不推荐这样做。
4、如果 函数需要返回值,必须保证每条分支都有返回值。
*/
//例如:
int addNum(int num1 ,int num2){
int result = num1+num2;
return result;
}
int isONum(int num ){
if(num%==){
return num;
}else if(num % >){
return num;
}else{ //如果不加一个else的话,程序会报错,程序不会分析你的逻辑。
return num;
}
}
int main (int argc ,const char * argc[]){
int result= addNum(,);
printf("两数之和为:%d \n",result);
return ;
}

上面用到了return关键字,这里来介绍下return

/*
return:
1、 在有返回值的函数里,return可以帮值返回出去。
2、如果函数没有返回值,也可以用return,但是return后面不能带值,否则会报错。
3、可以结束循环。
作用:结束函数。
*/

四、函数的注意事项

/*
1、函数内部不可以定义其他函数,但是可以声明。
2、函数可以调用其他的函数。
3、函数不允许重名。
4、编译器是自上而下编译的,所以在调用自定义函数时,需要把自定义函数写在main函数上方,如果想写在下面,则需要先声明。 声明的注意事项:
1、函数的声明可以卸载任意位置,但是必须要在调用该函数之前。
2、函数的声明可以写n个。
3、声明函数的时候,形参名可以省略。
4、函数返回值是int时,可以不用声明(仅限mac),所以推荐任何函数,都先声明。
5、声明函数的时候,最好和原函数头一样,推荐直接复制函数头,删掉大括号加上分号就可以了。。
*/
//例如:
int main(int argc,const char * argv[]){
void test();//这句话是告诉编译器,我有这个方法,只不过在下面了。这样编译器就不报错,当然你下面没有这个函数编译器也不会报错。
test();
void test1(int );
test1();
return ;
}
void test(){
printf("咩哈哈哈");
}
void test1(int Num){
printf("咩哈哈哈");
}

最新文章

  1. C语言内存管理
  2. Strom的安装及使用
  3. 流动python - 什么是魔术方法(magic method)
  4. Java基础语法<七> 对象与类
  5. Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理
  6. 总线复习之SPI
  7. Linux第二节课学习笔记
  8. jmeter-用户定义的变量
  9. session图片验证码,页面和请求是两个地址。android手机好用,iphone 失效。
  10. 关于陌生的依赖模块,如withStyles、react-apollo等
  11. 使用 IntraWeb (34) - TIWAJAXNotifier
  12. LaTeX 交叉引用系统简介
  13. poj 3463/hdu 1688 求次短路和最短路个数
  14. C#并行开发_Thread/ThreadPool, Task/TaskFactory, Parallel
  15. 针对IE6浏览器下,zoom:1的问题
  16. C# 的逻辑运算
  17. EDK_II环境搭建与测试
  18. Web Api - HttpMessageHandler 学习
  19. 5-青蛙的约会(ex_gcd)
  20. C语言不定型参数函数定义

热门文章

  1. Total Commander快捷键
  2. Js 时间轴和拓扑图
  3. C# 关键字 default
  4. MVC Model 数据注解与验证
  5. weekend110(Hadoop)的 第二天笔记
  6. Yii framework 应用总结小窍门(转)
  7. 南京Uber优步司机奖励政策(2月1日~2月7日)
  8. Ubuntu下Django初体验(三)——django初体验
  9. (9/18)重学Standford_iOS7开发_动画、自动布局_课程笔记
  10. WPF textbox 圆角制作