小螞蟻學習C語言(24)——C語言結構體——結構體變量和結構體指針變量

結構體變量和結構體指針變量做爲函數參數傳遞的問題(主要是說指針的優勢函數

    推薦使用結構體指針變量做爲函數參數來傳遞。spa

對結構體的內容輸入輸出.net

/*
    對結構體輸入輸出的案例
*/
# include <stdio.h>
# include <string.h>
//爲須要調用的三個函數,設置前置聲明
void InputMember(struct student * pMem);
void OutputOne(struct student * pMem);
void OutputTwo(struct student pMem);
//定義一個結構體
struct student
{
    char name[30];
    int age;
    float score;
};    //這個分號不能省略
int main(void)
{
    struct student member;
    /*
        輸入函數,要想跨函數修改值的內容,必須傳遞指針
    */
    InputMember(&member);
    /*
        輸出函數,傳遞指針輸出
    */
    OutputOne(&member);
    /*
        輸出函數,傳遞內容輸出
    */
    OutputTwo(member);
    return 0;
}
/*
    定義形參爲指針變量,能夠跨函數對變量修改
*/
void InputMember(struct student * pMem)
{
    strcpy(pMem->name,"張三");
    pMem -> age = 23;
    pMem -> score = 89.5;
}
/*
    經過接受指針的方式,進行輸出
*/
void OutputOne(struct student * pMem)
{
    printf("%s\n%d\n%f \n", pMem->name, pMem->age, pMem->score);
}
/*
    經過賦值的方式進行輸出
    之因此把這兩個函數放到一塊兒寫,主要是爲了區別:
        傳遞指針 和 傳遞數據 的區別
*/
void OutputTwo(struct student pMem)
{
    printf("%s\n%d\n%f \n", pMem.name, pMem.age, pMem.score);
}
/*
    VC++6.0上運行的結果:
    =====================================
    張三
    23
    89.500000
    張三
    23
    89.500000
    =====================================
    結論:
        輸入函數,必須使用指針操做。
        輸出函數,傳遞指針和傳遞數值結果都是正確的。
            但!是!對內存的消耗和執行效率上是不一樣的。
*/

究竟是發送指針仍是發送內容指針

    指針的優勢之一:code

        快速的傳遞數據blog

        耗用內存小    內存

        執行速度快ci

        

    假若有一個佔用100字節的類型,若是發送內存的話,在函數中也一樣須要開闢出100字節的內存,用於存放發送過來的值,這就消耗了內存。內存開闢出來以後,還要把這100字節的內容給拷貝到函數開闢的內存中,這就消耗了時間。既浪費了內存,又耗費了時間,so,仍是推薦使用傳遞指針的方式。get

    這就是指針的優勢。博客


 學PHP的小螞蟻 博客 http://my.oschina.net/woshixiaomayi/blog

相關文章
相關標籤/搜索