【黑马程序员】C语言函数

原创 2015年11月17日 16:28:39


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


一、函数的概述

功能相对独立的代码段



二、函数的分类


1.从函数的定义的角度看,函数可分为库函数和用户定义函数

2.语言的函数兼有其他语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数

3.从主调函数和被掉函数之间数据传输的角度来看又可分为无参函数和有参函数


三、自定义函数的书写格式


函数定义到使用分三步:1.声明 2.定义 3.调用函数


函数的基本格式:


返回值类型  函数名称(函数参数){



函数体;


}



三、函数的参数传递过程 

1)形参变量只有在被调用时才分配内存单元 在调用结束时,即刻释放所分配的内存单元。因 此,形参只有在函数内部有效。函数 调用结束返回主调函数后则不能再使用该形参变量。 

2)实参可以是常量、变量、表达式、函数等 无论实参是何种类型的量,在进行函数调用时,它 们都必须具有确定的值,以便把这些 值传送给形参。因此应预先用赋值,输入等办法使实参获得 确定值。 

3)实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。 


四、函数的声明


在主调函数中调用某函数之前应对被调函数进行说声明,这与使用变量之前要先进行声明变量和说明是一样的



五、递归函数的概述及构成条件


1.递归函数该商户及用法

一个函数在它的函数体内调用它自身称为递归调用。


2.递归和函数构成条件

1)存在自己调用自己

2)存在一个条件,能够让递归结束

3)能够找到一个规律,让要解决的问题的规模缩小

3.递归调用注意


1)主调函数就是被调函数

2)在递归函数中应该存在能够让递归结束的条件




四、递归应用


<span style="font-size:14px;">//
//  main.c
//  用递归法求N的阶乘
//
//  Created by Brisinga on 15/11/15.
//  Copyright © 2015年 yan. All rights reserved.
//

#include <stdio.h>

//定义计算阶乘的函数
int factorial(int n){
    //定义一个变量保存结果
    int result = 0;
    if (n==1) {  //定义阶乘退出条件
        result = 1;
    }else{
        result = n *factorial(n-1);  //递归调用
    }
    return result;   //返回结果
}
int main(int argc, const char * argv[]) {
    int result = factorial(5);
    printf("%d\n",result);
    return 0;
}
</span>

<span style="font-size:14px;">//
//  main.c
//  用递归实现x的y次方
//
//  Created by Brisinga on 15/11/15.
//  Copyright © 2015年 yan. All rights reserved.
//

#include <stdio.h>

//定义递归函数
int xy(int x,int y){
    
    //定义变量保存结果
    int result = 0;
    if (y==0) {
        result = 1; //定义递归控制
    }else{
    
        result = x * xy(x, y-1); //递归调用
    }
    
    return result;  //返回结果

}
int main(int argc, const char * argv[]) {
    
    int result = xy(3, 3);
    printf("%d\n",result);
    return 0;
}</span>


版权声明:本文为博主原创文章,未经博主允许不得转载。

黑马程序员:3分钟带你读懂C/C++学习路线

http://blog.csdn.net/itcast_cn/article/details/52302287         随着互联网及互联网+深入蓬勃的发展,经过40余年的时间...
  • baidu_26352053
  • baidu_26352053
  • 2016年12月10日 16:09
  • 1705

黑马程序员--一个为进入黑马云六的C++屌丝的28个日夜

首先我要告诉大家,我是一个在大学学了三年C++的人,可能你们会问我,学C++不是挺好的?干嘛突然间要重新学习java呢?况且C++以后的发展不也挺好吗?        我应该怎么回答你们呢?这也是我...
  • heima_hb5
  • heima_hb5
  • 2014年08月22日 08:52
  • 2391

黑马程序员再添高端学科,重磅推出C/C++课程

不会开挖掘机的厨子不是好会计,不会做制片的策划不是好后期,不会做需求的测试不是好经理。在IT技术更新比高铁提速还快的时代,你是黑着眼圈刷着夜,白天工作夜晚自习,只一心追赶最新技术的码农吗? 你有想过...
  • itcast_cn
  • itcast_cn
  • 2016年05月24日 13:14
  • 1292

黑马程序员——零基础学习iOS开发——03 c语言基础语法:关键字、标示符、注释、数据结构、变量、变量内存分析、scanf函数

------- android培训、java培训、期待与您交流! --------- 一、关键字、标识符、注释 1.关键字 1) 关键字就是C语言提供的有特殊含义的符号,也叫做“保留字” 2...
  • demon_csd
  • demon_csd
  • 2015年03月07日 15:22
  • 633

黑马程序员-C语言笔记(四)函数与多文件开发

while 循环   while循环格式   while (条件) {   }       运行原理 1.如果一开始条件就不成立...
  • nsjiexishede
  • nsjiexishede
  • 2014年06月18日 08:54
  • 225

黑马程序员-C语言-内存管理概念、内存分区以及内存函数

内存管理概念、内存分区以及内存函数                                                   ------Java培训、Android培训、iOS培训、.Ne...
  • qq_29170725
  • qq_29170725
  • 2015年06月25日 13:30
  • 386

黑马程序员——c语言关键字、标识符、数据类型、常量、变量及函数

一、关键字: 1、什么是关键字: 关键字就是已被c语言本身使用,不能做其他用途的字。 c语言中共有32个关键字。 2、数据类型关键字: A 基本数据类型(5个): void : 声...
  • sdgudan
  • sdgudan
  • 2015年05月28日 18:55
  • 343

黑马程序员——C语言笔记之scanf函数及使用注意事项

------- android培训、java培训、期待与您交流! ---------- 1、scanf函数(阻塞式函数) scanf函数原型包含在标准输入输出头文件“stdio.h”中,用于接...
  • programmer4Byouth
  • programmer4Byouth
  • 2015年08月11日 15:42
  • 437

黑马程序员------C语言常用字符串处理函数

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1:strlen:计算字符串的长度 函数名:strlen 原型:int strlen...
  • woliujialin
  • woliujialin
  • 2014年12月06日 19:31
  • 334

黑马程序员——C语言函数知识点

------- android培训、IOS培训、期待与您交流! ----------
  • yangyan0000
  • yangyan0000
  • 2014年09月19日 00:08
  • 188
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【黑马程序员】C语言函数
举报原因:
原因补充:

(最多只允许输入30个字)