c-05-函数

基本定义

int fnName(int args1){
    return int
}

要求

定义了返回值 则必须返回 没有返回值用void 
定义了参数  则个数 类型必须一一对应 
必须先声明后使用 
必须在顶层 不能函数内部再定义函数 
不能返回内部变量的 指针,地址 

main函数

// 程序的主入口 必有一个 
int main (){
    return 0; // 0 表示成功 其他值失败
}

参数

如果参数是一个变量 则调用传递时是 变量的拷贝值 而不是变量本身 
    传值引用 影响不到原始值 
如果参数是一个指针 则操作指针 改变变量本身 

函数指针

函数 void fn1(int a){}
指针 void (*fn1_p)(int) = &fn1;
    void (*fn1_p)(int) = fn1;
调用 *fn1_p(10) == fn1(10)
作用 如果参数或返回值也是一个参数 原型的写法 增强可读性 

C中规定 函数名本身就是函数地址 
    fn1 = &fn1 

函数原型

只要程序开头给出函数原型 则函数可以先试用 后实现 

exit() <stdlib.h> 终止整个程序

exit(EXIT_SUCCESS); exit(0) 成功退出 
exit(EXIT_FAILURE); exit(1) 失败退出

main中exit 等同于return 其他函数中exit 直接就退出了 

int atexit(void (*func)(void)); 退出前 再做某些事情 

函数说明符

extern 说明该函数是其他文件的函数 需要给出外部函数的原型
        默认可以不加  
    extern int foo(int arg1, char arg2);

static 
    函数内部的变量只会初始化一次 
    只能赋值常量 不能赋值变量 
    void fn1(void){
        static int num = 1;  
        num+=1; // 每次调用会递增 不会从1开始 
    }

    修饰函数本身时 则该函数只能在当前文件中使用
    static int fn2(){}

const 
    参数中表示 函数内部不能修改 这个参数变量 
    指针特殊 
        const int* p  不能修改值
        int* const p  不能修改地址
        const int* const p 都不能改 

可变参数

int printf(const char* format, ...);
<stdarg.h> 定义了操作可变参数的宏
    va_list   
    va_start
    va_arg
    va_end

    double average(int i, ...) {
        double total = 0;
        va_list ap; //初始化可变参数变量
        va_start(ap, i); // 定位到第可变参数处
        for (int j = 1; j <= i; ++j) {
            total += va_arg(ap, double); // 取出可变参数 (如何动态类型?)
        }
        va_end(ap); // 清理可变参数对象
        return total / i;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hamburgerV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值