学完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. (二)SSO之CAS框架单点退出,自己定义退出界面.

    用CAS的退出,仅仅能使用它自己的那个退出界面,假设有这种要求, 要求退出后自己主动跳转到登录界面, 该怎样做呢? 以下这篇文章实现了退出后能够自己定义跳转界面. 用了CAS,发现退出真是个麻烦事,退 ...

  2. swift学习第九天:可选类型以及应用场景

    可选类型的介绍 注意: 可选类型时swift中较理解的一个知识点 暂时先了解,多利用Xcode的提示来使用 随着学习的深入,慢慢理解其中的原理和好处 概念: 在OC开发中,如果一个变量暂停不使用,可以 ...

  3. Intellij IDEA中使用Debug

    Intellij IDEA中使用Debug Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用 ...

  4. gdb 调试多线程 神贴

    gdb 调试多线程如果目标进程已经core dump了,那么 gdb -c core xxx   xxx是对应的程序文件.如果目标进程还在运行,通常此时用于调试线程死锁的情况.有两种方法一是 gdb ...

  5. gdb查看线程堆栈信息

    查看堆栈:gdb -quiet -batch -ex='thread apply all bt' -p pid查看运行位置:gdb -quiet -batch -ex='thread apply al ...

  6. 移动web处理input输入框输入银行卡号四位一空格

    由于项目上有需求要求输入银行卡号四位一空格的需求,改过好几版发现都有bug,最后优化了一版看起来效果还行,发帖留存. 难点是从中间插入和删除处理光标问题. 首先需要用到获取光标和设置光标的方法. // ...

  7. Linux系统编程——线程私有数据

    在多线程程序中.常常要用全局变量来实现多个函数间的数据共享.因为数据空间是共享的,因此全局变量也为全部线程共同拥有. 測试代码例如以下: #include <stdio.h> #inclu ...

  8. python implementation for Qt's QDataStream(看一下QDataStream的结构)

    #!/usr/bin/env python # -*- coding: utf- -*- from __future__ import print_function from __future__ i ...

  9. thinkphp3.1 发送email

    //*********************发送邮件************************** Vendor('email'); //******************** 配置信息 * ...

  10. C++/Php/Python/Shell 程序按行读取文件或者控制台方法总结。

    C++/Php/Python/Shell 程序按行读取文件或者控制台方法总结. 一.总结 C++/Php/Python/Shell 程序按行读取文件或者控制台(php读取标准输入:$fp = fope ...