程序一共有两个地方出现错误,分别如下:
1、调用malloc函数需包含头文件
2、数组定义之后,数组占用的内存位置以及中某个元素的地址是不能随意改变的;故不能重新为数组分配内存地址,更不能对数组某一个元素的地址赋值。因此,for循环的循环体中,&tarry[i]属于不可修改的左值,不能被赋值。当你定义struct teacher tarry[3]之后,系统已经静态为tarry数组分配了内存,不能通过malloc重置。
在你结构体和对象定义都不改变的情况下,你是无法给tarry重新分配内存空间的,只能给p分配内存空间。如果你实在需要给tarry重新分配内存空间,可以考虑将struct teacher tarry[3]改成struct teacher *tarry变成指针,然后用melloc分配三倍你要分配给一个元素的内存空间:
tarry=(struct teacher*)malloc(9*sizeof(struct teacher));
一、int main是需要返回值的
二、&tarry[i]=(struct teacher*)malloc(3*sizeof(struct teacher));赋值号左边的应该是一个指针变量,数组名是不能存储地址的