本节开始说函数。

一、函数的基本用法 

/*
作用:可以实现代码的复用,在一定程度上解决代码冗余的问题;方便后期维护。
语法:
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("咩哈哈哈");
}

c语言学习之基础知识点介绍(八):函数的基本用法的更多相关文章

  1. c语言学习之基础知识点介绍(三):scanf函数

    本节继续介绍c语言的基础知识点. scanf函数:用来接收用户输入的数据. 语法:scanf("格式化控制符",地址列表); 取地址要用到取地址符:&(shift+7) 例 ...

  2. c语言学习之基础知识点介绍(二):格式化控制符和变量的补充

    上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...

  3. c语言学习之基础知识点介绍(十四):指针的进阶

    一.指针的加.减法运算 /* 1.加法运算 1).可以跟整数进行加法运算,得到的还是一个地址 公式: 地址 + 1 = 地址 + 1 * 类型所占的字节数 地址 + n = 地址 + n * 类型所占 ...

  4. oc语言学习之基础知识点介绍(一):OC介绍

      一.第一个OC程序 #import <Foundation/Foundation.h> //导入头文件 int main(int argc, const char * argv[]) ...

  5. c语言学习之基础知识点介绍(十八):几个修饰关键字和内存分区

    一.几个修饰关键字 全局变量: 全局变量跟函数一样也分为声明和实现.如果是全局变量,实现在它调用之后,那么需要在调用之前进行声明.注意:全局变量的声明只能写在函数外,写在函数就不是全局变量了而是局部变 ...

  6. c语言学习之基础知识点介绍(七):循环结构

    本节主要介绍循环结构 一.while循环 /* 语法: while(表达式){ //循环体; } 注意:循环变量.循环条件和循环控制语句三者缺一不可. 例如: */ ; //循环变量 ){ //循环条 ...

  7. c语言学习之基础知识点介绍(四):算术运算符和逗号表达式

    本节主要介绍c语言中运算符. 运算符主要分为四类: 1.算术运算符 加(+),减(-),乘(*),除(/),取余(%,两数相除,得到余数) 2.关系运算符 3.逻辑运算符 4.换位运算符 下面将依次介 ...

  8. c语言学习之基础知识点介绍(一):输出语句和变量简单介绍

    本系列是为了学习ios做准备的,也能作为c语言入门的教程看看. c语言的程序结构: 1.顺序结构:自上而下依次执行. 2.分支结构:程序有选择的执行某段代码或者不执行某段代码. 3.循环结构:程序循环 ...

  9. oc语言学习之基础知识点介绍(五):OC进阶

    一.点语法介绍 /* 以前封装后,要给属性赋值,必须调用方法 这样做,有两个缺点: 1.代码量多,调用方法要写的东西多. 2.看起来并不像是给属性赋值,也不像取值. 我们用点语法就可以更好的解决! 点 ...

随机推荐

  1. BZOJ_1588_&_Codevs_1296_[HNOI2002]_营业额统计(平衡树/set)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1588 给出每一天的营业值,求出之前的天当中与它相差最小的营业值与它的差的绝对值(第一天的差值为 ...

  2. WordPress Platinum SEO插件跨站脚本漏洞

    漏洞名称: WordPress Platinum SEO插件跨站脚本漏洞 CNNVD编号: CNNVD-201309-398 发布时间: 2013-09-24 更新时间: 2013-09-24 危害等 ...

  3. axis2 调用.net基于https的WebService接口

    一.创建证书 1,在IE中访问WSDL的URL,弹出“安全警报”窗口,查看证书->详细信息标签页->复制到文件->下一步->下一步->指定文件名,将证书下载保存为.cer ...

  4. BZOJP1003 [ZJOI2006]物流运输trans

    BZOJP1003 [ZJOI2006]物流运输trans 1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec  Memory Limit: 162 MB Sub ...

  5. UVa 10054 The Necklace BFS+建模欧拉回路

    算法指南 主要就是建立欧拉回路 #include <stdio.h> #include <string.h> #include <iostream> #includ ...

  6. [SAM4N学习笔记]LED点灯程序

    一.准备工作:      将上一节搭建的工程模板复制一份,命名为"1.blink",这作为我们开发的第一个程序. 二.程序编写:      板子上只有一个可控制的LED,就是LED ...

  7. 兼容的placeholder属性

    作为一个.net后台开发的程序猿,博客里既然大多都是前端相关的博文.是不是该考虑换方向了,转前端开发得了 ... 小小吐槽一下,近期受该不该跳槽所困惑,我有选择困难症! 继续前端,这次说一下输入框 p ...

  8. 系统内存和CPU管理、监控

    本博文的主要内容有 .系统内存管理.监控:vmstat和free -mt .系统CPU管理.监控:sar -u.mpstat.uptime linux系统内存和CPU是在系统运行的过程中不断消耗的资源 ...

  9. weekend110(Hadoop)的 第三天笔记

    (2015年1月17日) 课程目录 01-hdfs源码跟踪之打开输入流 02-hdfs源码跟踪之打开输入流总结 03-mapreduce介绍及wordcount 04-wordcount的编写和提交集 ...

  10. nyoj 757 期末考试【优先队列+贪心】

    期末考试 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没 交作业就会扣 ...