为已声明指针分配空间问题及malloc(),calloc(),free()函数的原型

作者在 2011-08-25 22:25:03 发布以下内容
#include<stdio.h>
#include<malloc.h>
void main()
{
    char *p1;
    *p1=malloc(sizeof(char));
}
错误信息:
error C2440: '=' : cannot convert from 'void *' to 'char'
错误原因:这里声明的指针是p,而不舍得*p。
 
修改:
#include<stdio.h>
#include<malloc.h>
void main()
{
    char *p1;
    p1=malloc(sizeof(char));
}
还是有错误,错误信息如下:
error C2440: '=' : cannot convert from 'void *' to 'char *'
错误原因:malloc()函数的函数原型为:void *malloc(unsigned int size);
延伸问题:
free()函数的函数原型为:void *free(void *block);
calloc()函数的函数原型为:void *calloc(unsigned n,unsigned size);
 
再次修改:
#include<stdio.h>
#include<malloc.h>
void main()
{
    char *p1;
    p1=(char *)malloc(sizeof(char));
    free(p1);//释放分配给指针变量p1的动态空间,值得注意的是:指针变量p1不会自动变成空指针。
}
free(p1);释放分配给指针变量p1的动态空间,值得注意的是:指针变量p1不会自动变成空指针。
 

 
C语言问题 | 阅读 2151 次
文章评论,共0条
游客请输入验证码
浏览48168次