c语言学习笔记(8)——函数
学完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)——函数的更多相关文章
- Go语言学习笔记(7)——函数和方法
Go语言中同时有函数和方法! 函数: go程序必须要包含一个main函数.main函数不能有任何参数和返回值! 1. 定义方法示例: func max(num1, num2 int) int { // ...
- 【Go语言学习笔记】函数做参数和闭包
函数做参数 在Go语言中,函数也是一种数据类型,我们可以通过type来定义它,它的类型就是所有拥有相同的参数,相同的返回值的一种类型.类似于重写(同名覆盖). 回调函数:函数有一个参数是函数类型,这个 ...
- Go语言学习笔记(五) [函数]
日期:2014年7月29日 1.函数定义:func (p type) funcname(q int) (r,s int) {return 0,0 } func: 保留字,用于定义一个函数 ...
- C语言学习笔记--字符串函数
字符串函数 需要包含头文件#include<stdio.h> strlen strcmp strcpy strchr strstr strcasestr
- C语言学习笔记之函数指针与函数指针数组
指针函数:本质是一个函数: 是一个返回指针类型的函数int * sum(){ } 函数指针:本质是一个指针: 是一个指向函数的指针 int (*p)(int,int) = sum; p(5,6); i ...
- Go语言学习笔记七: 函数
Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...
- 大一C语言学习笔记(5)---函数篇-定义函数需要了解注意的地方;定义函数的易错点;详细说明函数的每个组合部分的功能及注意事项
博主学习C语言是通过B站上的<郝斌C语言自学教程>,对于C语言初学者来说,我认为郝斌真的是在全网C语言学习课程中讲的最全面,到位的一个,这个不是真不是博主我吹他哈,大家可以去B站去看看,C ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
随机推荐
- mysql的入门基础操作
1.数据库的简单介绍 1.1 什么是数据库,就是一个文件系统,使用标准sql对数据库进行操作 1.2 常见的数据库 oracle 是oracle公司的数据库,是一个收费的大型的数据库 DB2,是IB ...
- vs2008,2010,2012安装包下载
近期在csdn学院当老师啦.把自己以学到的东西总结一下,录个视频给大家,也当发一下福利.这些以后都是自己无形的財产.哈哈. 安装与下载编程工具 Vs2008下载地址:http://pan.baidu. ...
- 【rlz03】十六进制转十进制
Time Limit: 3 second Memory Limit: 2 MB 问题描述 输入一个十六进制数,编程转换为十进制数. 整数部分不会超过65535,十六进制的小数部分不会超过2位. Sam ...
- UILabel调整字间距
1.引入 在文件导入 #import <CoreText/CoreText.h> 2.程序 NSMutableAttributedString *attributedString =[[N ...
- 搭建hbase-0.94.26集群环境 分类: B7_HBASE 2015-01-24 17:14 861人阅读 评论(0) 收藏
先安装hadoop1.2.1,见http://blog.csdn.net/jediael_lu/article/details/38926477 1.配置hbase-site.xml <prop ...
- Jquery浅克隆与深克隆是什么
Jquery浅克隆与深克隆是什么 一.总结 一句话总结:克隆的那些标签内容就是对应元素的html,事件就是那些绑定的事件. 1.jquery克隆的时候的注意事项是什么? 元素数据(data)内对象和数 ...
- heredoc(实现模板与代码的分离)
heredoc(实现模板与代码的分离) 一.总结 heredoc实现模板与代码的分离,实现的是在后台编程语言中批量输出html代码,在这个批量输出的html代码中又可以嵌套编程语言变量.所以很方便. ...
- Android系统开发(1)——GCC编译器的编译和安装过程
GCC编译器介绍 GCC编译器(GNG C Compiler)是GNU项目中符合ANSI C标准的编译系统,能够编译C C++ Object C等语言编写的程序,同时GCC也是一个交叉编译器,特别 ...
- 百度地图 layer弹出地图 获取坐标
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- POJ 1562 Oil Deposits (HDU 1241 ZOJ 1562) DFS
现在,又可以和她没心没肺的开着玩笑,感觉真好. 思念,是一种后知后觉的痛. 她说,今后做好朋友吧,说这句话的时候都没感觉.. 我想我该恨我自己,肆无忌惮的把她带进我的梦,当成了梦的主角. 梦醒之后总是 ...