首页 > 代码库 > 标C编程笔记day06 动态分配内存、函数指针、可变长度参数

标C编程笔记day06 动态分配内存、函数指针、可变长度参数


动态分配内存:头文件 stdlib.h
    malloc:分配内存
    calloc:分配内存,并清零
    realloc:调整已分配的内存块大小
    示例:
        int *p=(int *) malloc(3*sizeof(int));//分配内存,成功返回首地址,失败返回NULL
        free(p);p=NULL;//释放分配的内存,并修改指针的值,避免出现野指针(指向一个地址,但地址已被回收)
const 与指针:
    const int *p; //指针可变,指针对应的数据不可修改
    int * const p; //指针不可变,指针对应的数据可修改
    const int * const p; //指针不可变,指针对应的数据不可修改

指向函数的指针:
    int add(int a,int b){return a+b;}
    int mul(int a,int b){return a*b;}
    int (*a) (int ,int )=NULL; //定义函数类型指针
    int sum;
    a=add;
    sum=a(3,4);//7
    a=mul;
    sum=a(3,4);//12
    typedef int (*pa)(int,int) pa1,pa2; //定义函数类型指针
    pa1=add;
    pa2=mul;
    sum=pa1(3,4);//7
    sum=pa2(3,4);//12

可变长度参数的使用:头文件 stdarg.h
    int max(int count,...)//count为后面参数的个数,不确定多少个
    {
        va_list v;
        va_start(v,count);
        for(int i=0;i<count;i++)
        {
            int argi=va_arg(v,int);//取出各参数的值
        }
        va_end(v);
    }