• 结构体做函数参数(二)


    结构体中含有一维指针的内存分配和释放

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    typedef struct Teacher
    {
        char name[64];
        char *alisname;
        int age;
        int id;
    }Teacher;
    
    void printTeacher(Teacher *array,int num)
    {
        int i = 0;
        for (; i < num; i++)
        {
            printf("age : %d
    ",array[i].age);
        }
    }
    
    void sortTeacher(Teacher *array,int num)
    {
        int i,j;
        Teacher tmp;
        
        for (i = 0; i < num; i++)
        {
            for (j = i+1; j < num; j++)
            {
                if (array[i].age > array[j].age)
                {
                    tmp = array[j];
                    array[j] = array[i];
                    array[i] = tmp;
                }
            }
        }
    }
    
    int createTeacher( Teacher **pT, int num)
    {
        int i = 0 ;
        Teacher *tmp = NULL;
        tmp = (Teacher *)malloc(num * sizeof(Teacher));
        if (NULL == tmp)
        {
            return 0;
        }
    
        memset(tmp,0,sizeof(Teacher)*num);
    
        for (i = 0; i < num; i++)
        {
            tmp[i].alisname = (char *)malloc(60);
        }
    
        *pT = tmp;
        return 0;
    }
    
    void FreeTeacher(Teacher *p, int num)
    {
        int i = 0;
        if (p == NULL)
        {
            return ;
        }
    
        for (i = 0; i < num; i++)
        {
            if (p[i].alisname != NULL)
            {
                free(p[i].alisname);
            }
        }
        free(p);
    }
    
    int main()
    {
        int ret = 0;
        int i = 0;
        int num = 3;
        Teacher *pArray = NULL;
        ret = createTeacher(&pArray,num);
        if (ret != 0)
        {
            printf("func createTeacher() err : %d
    ",ret);
            return ret;
        }
    
        for(i = 0; i < num; i++)
        {
            printf("
    please enter age:");
            scanf("%d",&(pArray[i].age));
            printf("
    please enter name:");
            scanf("%s",(pArray[i].name));
            printf("
    please enter alias:");
            scanf("%s",(pArray[i].alisname));
        }
    
        printTeacher(pArray,num);
    
        sortTeacher(pArray,num);
    
        printf("after sort
    ");
        printTeacher(pArray,num);
    
        FreeTeacher(pArray,num);
        return 0;
    }
  • 相关阅读:
    GAN 的推导、证明与实现。
    WGAN学习笔记
    常用损失函数积累
    交叉熵在loss函数中使用的理解
    贝叶斯决策
    极大似然估计
    gated pixelCNN。
    三叉搜索树 转载
    Rabin-Karp 字符串匹配算法
    面试题整理 转载
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11783784.html
Copyright © 2020-2023  润新知