#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//结构体
typedef struct _Teacher
{
char name[64];//名字
int age;//年龄
char *title;//职称
}Teacher;
//打印函数
int printfArray(Teacher *pArr,int len)
{
if (pArr == NULL)
{
return -1;
}
for (int i = 0; i < len; i++)
{
printf("老师的名字叫%s,年纪%d,职称%s\n", pArr[i].name, pArr[i].age, pArr[i].title);
}
}
//创建内存
Teacher * createMem()
{
Teacher *pArray = NULL;
pArray = (Teacher *)malloc(3*sizeof(Teacher));
if (pArray == NULL)
{
return NULL;
}
//关键的一步
//pArray.title = (char *)malloc(60*sizeof(char));错误的
for (int i = 0; i < 3; i++)
{
pArray[i].title = (char *)malloc(sizeof(100));
}
return pArray;
}
//释放
void freeMem(Teacher *pArray)
{
if (pArray)
{
for (int i = 0; i < 3; i++)
{
if ((pArray[i]).title != NULL)
{
free((pArray[i]).title);
(pArray[i]).title = NULL;
}
}
free(pArray);
pArray = NULL;
}
}
int main()
{
Teacher *pArray = NULL;//创建结构体对象
pArray = createMem();
int i = 0;
if (pArray == NULL)
{
printf("分配内存有问题\n");
return -1;
}
for (i = 0; i < 3; i++)
{
printf("第%d老师的姓名:", i + 1);
scanf("%s", pArray[i].name);
printf("第%d老师的年纪:", i + 1);
scanf("%d", &pArray[i].age);
printf("第%d老师的职称:", i + 1);
scanf("%s", pArray[i].title);
}
printfArray(pArray,3);
freeMem(pArray);
pArray = NULL;
freeMem(pArray);
system("pause");
return 0;
}
结构体-内含一级指针变量的操作
最新推荐文章于 2021-05-19 12:56:57 发布