求解答,为什么可以在不知道内部大小的情况下分配动态内存呢?如果后面再详细定义难道会自动realloc吗?
源代码如下 或者对代码觉得可以怎么改的请指出来呢 这个代码貌似输出日期还有点问题
/*1.定义一个日期结构体,结构成员包括年、月、日。
2. 定义一教师结构体,结构体成员包括:雇员姓名(用字符指针)、家庭地址(用字符指针)、
出生日期(用日期结构体指针类型)。
3. 动态分配3个教师,初始化其值并输出,最后释放所有动态分配的内存。
*/
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"
typedef struct date{
int year;
int mouth;
int day;
}date ;
typedef struct teach{
char *pName;
char *paddres;
date *pdate;
}teach ;
void printf(teach *p,int n);
int main(int argc, char* argv[])
{
teach *psteach;
int i;
psteach=(teach *)malloc(sizeof(teach)*3);
for (i=0;i<3;i++)
{
psteach[i].pName=(char *)malloc(30);
psteach[i].paddres=(char *)malloc(30);
psteach[i].pdate=(date *)malloc(sizeof(date));
}
strcpy(psteach->pName,"Tom");
strcpy(psteach->paddres,"Beijing");
psteach->pdate->year=1999;
psteach->pdate->mouth=6;
psteach->pdate->day=20;
strcpy(psteach[1].pName,"peter");
strcpy(psteach[1].paddres,"shanghai");
psteach->pdate->year=1996;
psteach->pdate->mouth=2;
psteach->pdate->day=19;
strcpy(psteach[2].pName,"pig");
strcpy(psteach[2].paddres,"guangzhou");
psteach->pdate->year=2006;
psteach->pdate->mouth=5;
psteach->pdate->day=25;
printf(psteach,3);
printf("241 林树益!\n");
for (i=0;i<3;i++)
{
free(psteach[i].pName);
free(psteach[i].paddres);
free(psteach[i].pdate);
}
free(psteach);
getchar();
return 0;
}
void printf(teach *p,int n){
int i;
for (i=0;i<n;i++)
{
printf("姓名=%s 地址=%s 出生日期=%d \n",p->pName,p->paddres,p->pdate->year,p->pdate->mouth,p->pdate->day);
p++;
}
printf("\n");
}