C语言学习笔记-7.函数
2015-02-09 23:20
323 查看
一、函数的使用
1.每个函数在使用之前必须先定义
例:void function(); //有分号
int main() {…}
void add() {…} //无分号
2.文件包含处理:
#include <文件名> 在库函数头文件所在目录中查找(标准方式)
#include “文件名” 先在当前工作目录中查找,若没有则使用标准方式
3.函数的调用
形参:定义一个函数时指定的参数
实参:调用一个函数时指定的参数
注:C语言规定只能由形参传给实参
例:void function(); //有分号
int main() {…}
void add() {…} //无分号
2.文件包含处理:
#include <文件名> 在库函数头文件所在目录中查找(标准方式)
#include “文件名” 先在当前工作目录中查找,若没有则使用标准方式
3.函数的调用
形参:定义一个函数时指定的参数
实参:调用一个函数时指定的参数
注:C语言规定只能由形参传给实参
二、函数变量的作用范围
1.局部变量的作用范围是它所在的整个函数(包括main函数)
形参可以视为局部变量
2.全局变量的作用范围:从定义这个变量的位置开始,至程序结束
如果在同一源文件中,全局变量与局部变量同名,则在局部变量的作用域内,全局变量将被屏蔽
3.函数的调用:
控制流:语句执行的顺序
数据流:在函数调用发生及结束时,数据在函数之间流转的过程,如参数的传递、返回
形参可以视为局部变量
2.全局变量的作用范围:从定义这个变量的位置开始,至程序结束
如果在同一源文件中,全局变量与局部变量同名,则在局部变量的作用域内,全局变量将被屏蔽
3.函数的调用:
控制流:语句执行的顺序
数据流:在函数调用发生及结束时,数据在函数之间流转的过程,如参数的传递、返回
三、函数调用的实现过程
1.进程的内存分布
2.全局变量会被初始化为0
操作系统 | |
代码 | |
数据段 | 编译器用来存储字符串常量的地方 |
堆 | 主要用作动态申请的内存空间 |
栈 S1 | 在调用一个函数时,系统在栈空间中自动分配一块区 |
S2 | 域给这个函数,用来存放形参和局部变量等信息 |
…… | |
全局变量 |
四、数组与函数参数
1.函数定义:double averagee(int a[], int n) {…}
函数调用:average(score, n);
注意:数据类型必须一致
由于形参数组名实质上是指针,所以定义时可以不指定大小
由于数组名不带有长度信息,因此需增加一个参数,用来传递数组的长度
函数调用:average(score, n);
注意:数据类型必须一致
由于形参数组名实质上是指针,所以定义时可以不指定大小
由于数组名不带有长度信息,因此需增加一个参数,用来传递数组的长度
五、变量的存储属性
1.存储类型:
auto(自动型) | 默认局部变量,属于默认类型 |
register(寄存器型) | 存储在CPU寄存器中,优点:效率高,缺点:个数少,只能为int型 |
static(静态型) | 性质:全局寿命,局部可见性,可继承性 |
extern(外部型) | 不是变量定义,只是扩展外部变量作用域(范围:变量定义位置到源文件结束,及其他有extern说明的) |
相关文章推荐
- 学习笔记——atoi函数的用法及用C语言实现atoi
- c语言学习笔记(8)——函数
- c语言 函数 学习笔记
- C语言学习笔记:10_函数_高级
- C语言的学习笔记2-函数
- C语言学习笔记(19跨函数使用内存)
- what's in string? c语言string类函数实现汇总 都是学习使用指针的好例子啊(算是读书摘抄和笔记吧)
- 【学习笔记】【C语言】函数
- iOS开发学习笔记 2-9 C语言部分 内存分配函数 函数指针 指针函数 void*
- C语言学习笔记:09_函数
- C语言学习笔记【函数】函数调用与变量的作用域
- iOS开发学习笔记 2-9 C语言部分 内存分配函数 函数指针 指针函数 void*
- 【黑马程序员】C语言学习笔记之函数(八)
- C语言学习笔记(四)——函数(重点)
- 学习51笔记与一份从网上找的资料:单片机C语言中_nop_函数的使用及C语言的延时计算2010-
- c语言学习笔记(8)——函数
- iOS开发学习笔记 2-6 C语言部分 函数及变量的作用域
- C语言学习笔记之常用的字符串处理函数
- C语言学习笔记(三) 输入输出函数的基本用法以及运算符
- 【学习笔记】【C语言】结构体和函数