结构体嵌套一级指针

  • 设计结构体 struct Person{char*name,int age}
  • 在堆区创建 结构体指针数组 malloc(sizeof(struct Person*)*3);
  • 给每个结构体也分配到堆区
  • 给每个结构体的姓名分配到堆区
  • 打印数组中所有人的信息

代码示例:

#define
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Person
{
char*name;
int age;
};
struct Person**allocateSpace()
{
struct Person**pArray = malloc(sizeof(struct Person*)*3);
for (int i = 0; i < 3; i++)
{
//给每个结构体开辟内存
pArray[i] = malloc(sizeof(struct Person));
//给每个结构体的姓名 开辟内存
pArray[i]->name = malloc(sizeof(char)*64);
sprintf(pArray[i]->name,"name_%d",i+1);
pArray[i]->age = i + 20;
}
return pArray;
}
void printArray(struct Person**pArray, int len)
{
for (int i = 0; i < len; i++)
{
printf("姓名:%s 年龄:%d\n", pArray[i]->name, pArray[i]->age);;
}
}
void freeSpace(struct Person**pArray, int len)
{
for (int i = 0; i < len; i++)
{
//释放姓名
if (pArray[i]->name != NULL)
{
printf("%s被释放了\n",pArray[i]->name);
free(pArray[i]->name);
pArray[i]->name = NULL;
}
//释放结构体
free(pArray[i]);
pArray[i] = NULL;
}
//释放数组
free(pArray);
pArray = NULL;
}
void test01()
{
struct Person**pArray = NULL; //malloc(sizeof(struct Person*)*3);
pArray=allocateSpace();
printArray(pArray,3);
//释放内存
freeSpace(pArray,3);
pArray = NULL;
}
int main()
{
test01();
return EXIT_SUCCESS;
}

更多文章,敬请关注微信公众号:YQ编程