関数パラメータの構造(B)

メモリの割り当てと割り当て解除へのポインタを含む三次元構造

書式#include <stdio.hに> 
する#include < 文字列の.h> 
の#include <stdlib.h>に含ま

typedefは構造体の先生
{
    文字名[ 64 ]。
    char * alisname。
    int型の年齢;
    int型のID。
}先生;

 printTeacher(教師*配列、int型NUM)
{
    int型私= 0 ;
    (; I <NUM;私は++ 
    {
        printf(" 年齢:%Dを\ n " 、配列[i]の.age)。
    }
}

 sortTeacher(教師*配列、int型NUM)
{
    int型I、J。
    教師TMP;
    
    (i = 0 ; iは<NUM; iは++ 
    {
        (J = I + 1、J <NUM; J ++ 
        {
            もし(配列[I] .age> 配列[J] .age)
            {
                TMP = 配列[J]。
                アレイ[J] = 配列[i]は、
                配列[I] = TMPと、
            }
        }
    }
}

int型 createTeacher(教師** PT、int型NUM)
{
    int型私= 0 ;
    先生 * TMP = NULL;
    TMP =(教師*)のmalloc(NUMの*のはsizeof (教師))。
    もし(NULL == TMP)
    {
        リターン 0 ;
    }

    memsetの(TMP、0はsizeof(教師)* 数値)。

    (i = 0 ; iは<NUM; iは++ 
    {
        TMP [I] .alisname =(CHAR *)のmalloc60 )。
    }

    *のpT = TMP;
    リターン 0 ;
}

 FreeTeacher(教師* pを、int型NUM)
{
    int型私= 0 ;
    もし(P == NULL)
    {
        返します
    }

    (i = 0 ; iは<NUM; iは++ 
    {
        もし(P [i]が.alisname!= NULL)
        {
            フリー(P [i]の.alisname)。
        }
    }
    無料(P);
}

int型のmain()
{
    int型 RET = 0 ;
    int型私= 0 ;
    int型 NUM = 3 ;
    先生 * pArray = NULL;
    RET = createTeacher(&pArray、NUM)。
    もし(RET!= 0 
    {
        printf(" FUNCのcreateTeacher()ERR:%Dを\ n " 、RET)。
        リターンRET;
    }

    (i = 0 ; iは<NUM; iは++ 
    {
        printf(" \ nplease年齢を入力してください:" );
        scanf関数(" %のD "、および(pArray [I] .age))。
        printf(" \ nplease名前を入力してください:" );
        scanf関数(" %sの" 、(pArray [I] .nameの))。
        printf(" \ npleaseエイリアスを入力してください:" );
        scanf関数(" %sの" 、(pArray [I] .alisname))。
    }

    printTeacher(pArray、NUM)。

    sortTeacher(pArray、NUM)。

    printf(" の後にソート\ N " );
    printTeacher(pArray、NUM)。

    FreeTeacher(pArray、NUM)。
    リターン 0 ;
}

 

おすすめ

転載: www.cnblogs.com/wanghao-boke/p/11783784.html