函数

课堂笔记
函数
main 主函数

标准函数 库函数 包含头文件后直接调用
printf scanf rand srand sqrt pow time
自定义函数
返回值类型 函数名(参数列表){
函数体
}

函数可以重复调用
返回值类型 :将被定义为返回值类型,如果没有返回一个结果可以用void
形参列表:用来接收调用函数时所给的数据,一个参数一个类型,不能省略 int function(int x,int y) 函数可以没有形参也可以有多个形参
当形参列表为空时可以接受任意多个参数 不接受参数时可以定义为void
如果返回类型不是void,一般通过return来返回结果 如果函数声明为void,那么可以用return;结束函数

变量 = 函数名(实参列表); 变量将保存函数的返回值 形参用来接收实参
C函数的隐式声明 c语言中函数默认返回值为int 如果一个函数的返回值为int则可以省略
c语言中调用函数,如果前面没有声明过该函数,则编译器会隐式声明一个函数默认为int类型
用函数求什么结果直接返回结果即可

数组作为函数参数 需要传递数组长度
void print(int arr[],size_t len){ //unsigned int长度为len
for(int i=0;i<len;i++){
printf arr[i];
}
}
二维数组作为函数参数:数据类型(int a[][一维长度],size_t len)

递归调用
函数自己调用自己
函数调用 在内存中开辟一块区域用于保存函数 函数调用之后会回收该内存 递归深度太大会导致性能消耗过快

可变长参数列表 :
printf(int a,…);
声明va_list变量
va_list ap;
初始化
va_start(ap,最后一个形参名);
获取值 每调用一次获取一个参数 type是类型
type x = va_arg(ap,type)
关闭资源
vi_end(ap);

对于普通数据类型 在函数中修改形参的值不会影响实参的值
在函数中修改数组元素的值会影响原实参数组的值
关于定义函数时不让函数修改形参的值 在形参类型前加const 表示不能对形参的值进行修改 一般情况下修改数组才有意义
const修饰的变量表示只读

& 取址运算符
对于&操作数只有一个且只能是左值
%p 可以输出一个地址:一个编号 一个十六进制的整数
内存地址叫指针 指针变量可以保存内存地址 int *pa=&a;
每一个运行的c语言程序中都有4g的虚拟内存

面试问的最多的问题之一:

4g虚拟内存从低到高依次为:代码区、全局区、堆区、栈区
代码区:代码指令 字面值字符串
静态全局区:数据段:已经初始化的全局变量和已经初始化的静态变量
BSS段:未初始化的全局变量和未初始化的静态变量
堆区:动态内存 手动申请,手动释放 从小往大存
栈区:局部变量 块变量 形参 函数调用开销 从大往小存

语句块{}
块变量:定义在语句块中的变量 在栈区
局部变量:定义在函数中的变量(形参) 在栈区
全局变量:定义在全局位置(在函数外)的变量 在静态全局区
全局变量不初始化也会自动初始化为0 储存位置 作用域 生命周期
局部变量可以和全局变量同名,访问同名变量时,局部变量会隐藏掉全局变量

变量的修饰
auto 自动的 int=auto int 可以省略
static 静态的 修饰局部变量、块变量:局部变量的存储位置发生改变,由栈区变为全局区,静态局部变量的生命周期为整个程序,作用域不变
静态局部变量的声明语句在整个程序中只会执行一次 静态局部变量的值不会随着函数的调用消失
修饰全局变量:存储位置不变,生命周期不变,作用域:静态全局变量只能在本文件中使用
修饰函数:表示该函数只能在本文件中使用
const 只读的 修饰变量表示只读的,不可以修改 作用:修饰形参,防止在函数中意外修改,增加代码的健壮性和可读性
register 寄存器变量 申请把变量作为寄存器变量 如果一个变量经常使用或者一直在使用 编译器可能会拒绝
寄存器要求数据必须是32位, int 寄存器变量不可以取地址
volatile 易变的 修饰的变量表示可能随时发生变化 多线程的情况下
extern 声明一个在其他文件中定义的全局变量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值