1214.2——动态分配内存实战

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    char *name;
    int age;
}Person;

int main(int argc, const char * argv[]) {
    
    //定义一个结构体指针数组
    Person *array[5] = {};
    
    //从终端输入一个人的信息
    //为这个人分配内存空间
    Person *pxd = (Person *)malloc(1 * sizeof(Person));
    if (pxd == NULL) {
        //失败退出
        exit(EXIT_FAILURE);
    } else {
        //输入信息
        //1.name
        //为name指针指向的变量分配内存空间
        char *pName = (char *)malloc(10 * sizeof(char));
        if (pName == NULL) {
            //失败退出
            //首先释放结构体的内存
            free(pxd);
            
            //退出
            exit(EXIT_FAILURE);
        } else{
            //
            pxd->name = pName;
            
            printf("请输入姓名:");
            scanf("%s", pName);
        }
        
        printf("请输入年龄:");
        scanf("%d", &(pxd->age));
    }
    
    array[0] = pxd;
    
    //其他操作
    
    //输出
    printf("name:%s age:%d ", array[0]->name, array[0]->age);
    
    //释放内存
    free(pxd->name);
    free(pxd);
    return 0;
}

原文地址:https://www.cnblogs.com/damonWq/p/5046602.html