作者在 2011-08-25 22:25:03 发布以下内容
#include<stdio.h>
#include<malloc.h>
void main()
{
char *p1;
*p1=malloc(sizeof(char));
}
#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));
}
还是有错误,错误信息如下:#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不会自动变成空指针。#include<malloc.h>
void main()
{
char *p1;
p1=(char *)malloc(sizeof(char));
free(p1);//释放分配给指针变量p1的动态空间,值得注意的是:指针变量p1不会自动变成空指针。
}