9、變數的初始化

來源:互聯網
上載者:User

————————
接上一條,變數一定要被初始化再使用。C/C++編譯器在這個方面不會像JAVA一樣幫你初始化,這一切都需要你自己來,如果你使用了沒有初始化的變數,結果未知。好的程式員從來都會在使用變數前初始設定變數的。如:

    1) 對malloc分配的記憶體進行memset清零操作。(可以使用calloc分配一塊全零的記憶體)
    2) 對一些棧上分配的struct或數組進行初始化。(最好也是清零)
   
不過話又說回來了,初始化也會造成系統已耗用時間有一定的開銷,所以,也不要對所有的變數做初始化,這個也沒有意義。好的程式員知道哪些變數需要初始化,哪些則不需要。如:以下這種情況,則不需要。
       
        char *pstr;  /* 一個字串 */
        pstr = ( char* ) malloc( 50 );
        if ( pstr == NULL ) exit(0);
        strcpy( pstr, "Hello Wrold" );

但如果是下面一種情況,最好進行記憶體初始化。(指標是一個危險的東西,一定要初始化)

        char **pstr;  /* 一個字串數組 */
        pstr = ( char** ) malloc( 50 );
        if ( pstr == NULL ) exit(0);
       
        /* 讓數組中的指標都指向NULL */
        memset( pstr, 0, 50*sizeof(char*) );
       
而對於全域變數,和靜態變數,一定要聲明時就初始化。因為你不知道它第一次會在哪裡被使用。所以使用前初始這些變數是比較不現實的,一定要在聲明時就初始化它們。如:

    Links *plnk = NULL;  /* 對於全域變數plnk初始化為NULL */

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.