一.动态分配内存的四个函数
1.malloc函数,原型是void * malloc(unsigned int size);其作用是在内存的动态存储区中分配一个人长度为size的连续存储空间。 2.calloc函数,原型是void * calloc(unsigned int size);其作用是在内存的动态存储区中分配n个长度为size的连续空间。 3.free函数,其原型是void free(void *p); 其作用是释放p所指向的空间,使这部分空间能重新被其它变量使用。 4.realloc函数,其原型是void *realloc(void *p,unsigned int size); 可以用recalloc函数重新分配。
二.void指针类型
oid指针类型是基类型为void的指针类型,它不指向任何类型的数据。请注意:不要把“指向void类型”理解为指向任何类型的数据,而应理解为“指向空类型”或"不指向确定的类型"的数据。例如
int a = 3;
int *p1 = &a;
char *p2;
void *p3;
p3 = (void*)p1;
p2 = (char*)p3;
p3 = &a;
printf("%d\n",*p3);
注意: (1)把void类型的指针变量赋值给不同基类型的指针变量时(或相反),编译系统会自动进行转换.不必用户自己强制转换. *(2)当指针p为void类型的指针时,不能企图通过类型"p"来访问相应的值。
三.代码举例
#include <stdio.h>
#include <stdlib.h>
void knowledgePinter();
int main(){
knowledgePinter();
return 0;
}
void knowledgePinter(){
int i;
int *p = malloc(5*sizeof(int));
for(i=0;i<5;i++){
scanf("%d",p+i);
}
for(i=0;i<5;i++){
printf("%d ",*(p+i));
}
free(p);
}
|