一个很怪的C语言问题希望高手进

来源:百度知道 编辑:UC知道 时间:2024/06/17 23:36:36
首先有这样一个程序:
#include <stdio.h>
#include<stdlib.h>
main()
{
struct student
{ char name[10];
int age;
};
struct student *p=NULL;
p =(struct student *)malloc(sizeof(struct student));//分配一个 存储单元
scanf("%s%d",&p->name,&p->age);
printf("%s,%d",p->name,p->age);
delete p;
}我是在C-free中运行的。所以没有命名而且可以运行没有错误。
不过当我把文件保存为中文名加后缀.c后在执行就有一个错在最后一句中。
真诚期望高手指点。谢谢

函数malloc的原型如下:
void * malloc(size_t size);
用malloc申请一块长度为length的整数类型的内存,程序如下:
int *p = (int *) malloc(sizeof(int) * length);
我们应当把注意力集中在两个要素上:“类型转换”和“sizeof”。
1.malloc返回值的类型是void *,所以在调用malloc时要显式地进行类型转换,将void * 转换成所需要的指针类型。
2.malloc函数本身并不识别要申请的内存是什么类型,它只关心内存的总字节数。
 函数free的原型如下:
void free( void * memblock );
指针p的类型以及它所指的内存的容量事先都是知道的,语句free(p)能正确地释放内存
malloc和free是c的两个库函数,配对使用。
new和delete是c++里面的运算符,不是函数,c里面没有他们俩,他们俩也是配对使用。

malloc的就free
new的就delete

scanf("%s%d",p->name,&p->age);

还有C语言没有delete!!!!
free(p);

正确的啊
建议你用Dev-C++编译器

可能是你的文件扩展名为.c了,只是电脑没显示,再加一个就是.c.c了,当然错误啦

是delete的原因吧,他不是c语句所支持的。应该改成free吧!