标C编程笔记day06 动态分配内存、函数指针、可变长度参数
2014-08-01 17:40
393 查看
动态分配内存:头文件 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);
}
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);
}
相关文章推荐
- 标C编程笔记day06 动态分配内存、函数指针、可变长度參数
- JAVA 的 可变长度的 方法的 参数 比如 String...arg
- 深入了解JAVA可变长度的参数(Varargs)
- Java语法糖1:可变长度参数以及foreach循环原理
- C语言函数的可变长度参数va_arg剖析
- 深入了解JAVA可变长度的参数
- 可变长度参数
- C语言函数可变长度参数剖析
- java类型后面加三个点——可变长度参数列表
- Java 数组的不同定义方式和数组长度为可变参数
- 深入了解JAVA可变长度的参数(Varargs)
- Java高新技术1---增强for循环 ---装箱与拆箱享元设计模式--自己写枚举--可变长度的参数
- 深入了解JAVA可变长度的参数(Varargs)
- C/C++可变参数宏, 编译期获取宏的可变参数长度
- Ruby:方法中可变长度参数列表
- java函数参数后面加三个点——可变长度参数列表
- 学会JAVA可变长度的参数(Varargs)
- 可变长度参数以及foreach循环原理
- Java中定义形参长度可变的参数
- Java中长度可变参数的实现 其实质是数组