学完c语言的函数可以理解面向过程的语言

函数是c语言的重点

一、为什么需要函数?

1.避免了重复性操作

2.有利于程序的模块化(每一个功能可以用不同函数去实现)

二、什么叫做函数?

逻辑上:能够完成特点功能的独立的代码单元

物理上:能够接收数据

能够对接收的数据进行处理

能够将处理的结果返回

总结:  函数是个工具,他是为了解决大量类似问题而设计的

函数可以当做一个黑匣子(不需要知道内部具体实现)

三、如何定义函数?

函数返回值 函数名(函数的形参列表){

函数的执行体

}

1.函数定义的本质是详细描述函数之所以能够实现某个特定功能

的具体实现方法

    2.return 表达式; 的含义

终止被调函数,向主调函数返回表达式值

如果表达式为空,则只终止函数,不向主调函数返回任何值

------------------------------------------------------------------------------

# include <stdio.h>





void f(void){

int i;

for(i=0; i<5; i++){

printf("大家辛苦了!\n");

return;           //return 是终止函数的,break是终止循环的

}

printf("同志们好!\n");

}





int main(void){

f();

}

------------------------------------------------------------------------------

3.函数返回值的类型也称为函数的类型,因为如果函数名前的返回值

类型和函数执行体中的return 表达式,中表达式的类型不同的话,则

最终函数返回值的类型以函数名前的返回值类型为准

-------------------------------------------------------------------------------

int f(){

return 10.5;

}

int main(){

float f;

f = f();

printf("f = %d", f)



return 0;

}

最终结果: f = 10.000000

-------------------------------------------------------------------------------

四、函数的分类

有参函数 和 无参函数

有返回值 和 无返回值

库函数 和 用户自定义函数

值传递 和 地址传递函数

普通函数 和 主函数

一个程序必须有且只能有一个主函数,

主函数可以调用普通函数,普通函数不能调用主函数

主函数是程序的入口,也是程序的出口

--------------------------------------------------------------------------------

/*

判断一个数是否为素数

*/

# include <stdio.h>





bool isPrime(int val);





int main(){

int val;





printf("请输入一个数判断是否为素数:");

scanf("%d", &val);

bool flag = isPrime(val);





if(flag)

printf("是素数\n");

else

printf("不是素数\n");



return 0;

}





bool isPrime(int val){

int i;



for( i=2; i<val; ++i){

if(val%i == 0) break;

}





if(val == i)

return true;

else

return false;

}

--------------------------------------------------------------------------------

五、注意的问题

函数调用和函数定义的顺序

函数前置声明;

1.告诉编译器即将可能出现的若干个字母代表的是一个函数

2.告诉编译器即将可能出现的若干个字母所代表的函数的形参和返回值的具体情况

3.函数的声明是一个语句,末尾加分号。

4.对库函数的是声明是通过 # include <库函数所在的文件的名字.h> 来实现的

<stdio.h> std表示标准的 io表示输入输出流 .h 表示头文件

形参和实参之间的关系

1.个数必须相同,位置必须一一对应,数据类型必须相互兼容。

如何在软件开发中合理的设计函数来解决实际问题

1.功能尽量独立单一,可以使代码重用率提高。

函数是c语言的基本单位,类是java,c#,c++的基本单位

六、常用的系统函数

# include <math.h>

double sqrt(double x);

求x的平方根

int abs(int x);

求x的绝对值

double fabs(double x)

求x的绝对值

推荐一本书:

《turboc2.0实用大全》机械工业

七、递归

栈:所有先进后出的存储结构

A---------->B

A---------->A

变量的作用域和存储方式

按作用域分

全局变量

在所有的函数外边定义的变量

局部变量

在一个函数内部定义的变量或者函数的形参都统称为局部变量。


---------------------------------------------------------------------------------------

void g(){

printf("k = %d\n", k);

}

int k = 100;

会出现错误,k的使用范围是从定义位置开始到整个程序结束

void g(int i){

int i;  //不能重复定义变量

}

# include <stdio.h>





int i = 100;





void g(int i){

printf("i = %d", i);

}





int main(){

g(8);



return 0;

}

在一个函数中如果全局变量和局部变量名相同

局部变量会屏蔽掉全局变量

---------------------------------------------------------------------------------------


按变量的存储方式

静态变量

自动变量

寄存器变量

c语言学习笔记(8)——函数的更多相关文章

  1. Go语言学习笔记(7)——函数和方法

    Go语言中同时有函数和方法! 函数: go程序必须要包含一个main函数.main函数不能有任何参数和返回值! 1. 定义方法示例: func max(num1, num2 int) int { // ...

  2. 【Go语言学习笔记】函数做参数和闭包

    函数做参数 在Go语言中,函数也是一种数据类型,我们可以通过type来定义它,它的类型就是所有拥有相同的参数,相同的返回值的一种类型.类似于重写(同名覆盖). 回调函数:函数有一个参数是函数类型,这个 ...

  3. Go语言学习笔记(五) [函数]

    日期:2014年7月29日   1.函数定义:func (p type) funcname(q int) (r,s int) {return 0,0 }     func: 保留字,用于定义一个函数 ...

  4. C语言学习笔记--字符串函数

    字符串函数 需要包含头文件#include<stdio.h> strlen strcmp strcpy strchr strstr strcasestr

  5. C语言学习笔记之函数指针与函数指针数组

    指针函数:本质是一个函数: 是一个返回指针类型的函数int * sum(){ } 函数指针:本质是一个指针: 是一个指向函数的指针 int (*p)(int,int) = sum; p(5,6); i ...

  6. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

  7. 大一C语言学习笔记(5)---函数篇-定义函数需要了解注意的地方;定义函数的易错点;详细说明函数的每个组合部分的功能及注意事项

    博主学习C语言是通过B站上的<郝斌C语言自学教程>,对于C语言初学者来说,我认为郝斌真的是在全网C语言学习课程中讲的最全面,到位的一个,这个不是真不是博主我吹他哈,大家可以去B站去看看,C ...

  8. 2017-04-21周C语言学习笔记

    C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...

  9. GO语言学习笔记(一)

    GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...

  10. Go语言学习笔记十三: Map集合

    Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...

随机推荐

  1. Nginx和Nginx+的比較(下)

    Nginx和Nginx+的比較(下) 作者:chszs.未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 内容紧接上一篇<Nginx和 ...

  2. 常用MVC框架

    J2EE开常用的SSH或SSI框架,对应解决表示层.业务逻辑层.持久化层的问题,其中对表示层的解决方案最多,常见的有Struts1/2,Spring MVC等,实际上都是在最底层的Servlet规范中 ...

  3. Internet连接共享只能上qq不能打开网页的问题解决

    作者:朱金灿 来源:http://blog.csdn.net/clever101 之前我写过一篇<Windows共享上网的做法>,在设置共享网络时是有一个家庭网络连接的选项的,如下图: 但 ...

  4. Gora快速入门 分类: C_OHTERS 2015-01-30 09:55 465人阅读 评论(0) 收藏

    概述 Gora是apache的一个开源项目. The Apache Gora open source framework provides an in-memory data model and pe ...

  5. 事件处理之一:两种方式:监听器与回调 分类: H1_ANDROID 2013-10-31 10:26 3250人阅读 评论(0) 收藏

    Android组件的事件处理有2种方式: 1.基于监听器的事件处理方式:先定义组件,然后为组件设定监听器. 详见http://blog.csdn.net/jediael_lu/article/deta ...

  6. jquery-12 jquery常用动画效果有哪些

    jquery-12 jquery常用动画效果有哪些 一.总结 一句话总结:jquery可以用户animate()自定义动画,也可以slide和fade系列方法来设置动画. 1.动画效果如何设置执行时间 ...

  7. Windows共享上网的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 现在有这样一个网络应用场景:A机器是一个PC台式机,处在两个网络中,一个是处在192.168.30.1到192.168 ...

  8. linux下创建一个可执行脚本

    1.touch hello.sh   2.vim hello.sh   键入i   插入#!/bin/sh      echo hello world;  键入:      esc      :   ...

  9. ArcEngine 图层标注 (根据字段、角度)

    转自chanyinhelv原文 ArcEngine 图层标注 (根据字段.角度) 今天做了一个用AE来控制图层是否显示标注,以及已哪一个字段作为标注的字段,以哪一个字段作为标注的角度,现将代码写下来, ...

  10. Linux 网络编程系列教程

    一.基础理论篇 01.网络协议入门 02.LAN.WAN.WLAN.VLAN 和 VPN 的区别 03.IP 地址介绍 04.广播地址介绍 05.无连接和面向连接协议的区别 06.因特网的IP协议是不 ...