<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jasmine214--love

    只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
    posts - 731, comments - 60, trackbacks - 0, articles - 0

    c全局變量、static、函數指針

    Posted on 2012-07-16 16:03 幻海藍夢 閱讀(1425) 評論(0)  編輯  收藏 所屬分類: C語言學習

    c全局變量、static、函數指針

    1、static全局變量與普通的全局變量有什么區別?static局部變量和普通局部變量有什么區別?static函數與普通函數有什么區別?
        答:全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。全局變量本身就是靜態存儲方式, 靜態全局變量當然也是靜態存儲方式。 這兩者在存儲方式上并無不同。這兩者的區別雖在于非靜態全局變量的作用域是整個源程序, 當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。 而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。由于靜態全局變量的作用域局限于一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。
        從以上分析可以看出, 把局部變量改變為靜態變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量后是改變了它的作用域, 限制了它的使用范圍。
        static函數與普通函數作用域不同。僅在本文件。只在當前源文件中使用的函數應該說明為內部函數(static),內部函數應該在當前源文件中說明和定義。對于可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件
        static全局變量與普通的全局變量有什么區別:static全局變量只初使化一次,防止在其他文件單元中被引用;
        static局部變量和普通局部變量有什么區別:static局部變量只被初始化一次,下一次依據上一次結果值;
        static函數與普通函數有什么區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝
    2、如何引用一個已經定義過的全局變量?
         答:extern
         可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那么在編譯期間 會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。

    3、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么?
        答:可以,在不同的C文件中以static形式來聲明同名全局變量。
        可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯。

    4、程序的局部變量存在于(堆棧)中,全局變量存在于(靜態區 )中,動態申請數據存在于( 堆)中。
    5、設有以下說明和定義:
    typedef union {long i; int k[5]; char c;} DATE;
    struct data { int cat; DATE cow; double dog;} too;
    DATE max;
    則語句 printf(”%d”,sizeof(struct date)+sizeof(max));的執行結果是:___52____
        答:DATE是一個union, 變量公用空間. 里面最大的變量類型是int[5], 占用20個字節. 所以它的大小是20
    data是一個struct, 每個變量分開占用空間. 依次為int4 + DATE20 + double8 = 32.
    所以結果是 20 + 32 = 52.
    當然…在某些16位編輯器下, int可能是2字節,那么結果是 int2 + DATE10 + double8 = 20
    6. 函數指針
         定義: void (*fptr)();
         或者: typedef void (*FP)(); fp fptr;
         把函數的地址賦值給函數指針,可以采用下面兩種形式:
             fptr=&Function;
             fptr=Function;
         取地址運算符&不是必需的,因為單單一個函數標識符就標號表示了它的地址,如果是函數調用,還必須包含一個圓括號括起來的參數表。
         可以采用如下兩種方式來通過指針調用函數:
             x=(*fptr)();
             x=fptr();

    轉:
    http://hi.baidu.com/xmxqiyan/item/139d9e3c312833bf134b1419
    主站蜘蛛池模板: 日韩免费毛片视频| 国外亚洲成AV人片在线观看| 日本xxwwxxww在线视频免费 | 亚洲小视频在线播放| 妞干网免费视频观看| GOGOGO高清免费看韩国| 亚洲成无码人在线观看| 免费国产在线观看老王影院| 日韩午夜理论免费TV影院| 亚洲AV无码一区二区三区性色| 亚洲午夜福利在线观看| 大地资源在线观看免费高清| 国产日韩在线视频免费播放| 亚洲综合校园春色| 久久九九亚洲精品| APP在线免费观看视频| 精品久久久久久亚洲精品| 久久久久久久亚洲精品| 女性无套免费网站在线看| 99视频在线观看免费| 亚洲国产欧美国产综合一区 | 一本一道dvd在线观看免费视频| 99人中文字幕亚洲区| 亚洲免费视频一区二区三区| 麻豆视频免费播放| 亚洲高清有码中文字| 亚洲精品成人网久久久久久| 成人免费福利电影| 立即播放免费毛片一级| 亚洲AV无码之日韩精品| 国产黄色片免费看| 亚洲Av永久无码精品一区二区| 久久精品国产亚洲av水果派 | 亚洲人成色77777在线观看大 | 国产亚洲精品自在久久| 久久综合给合久久国产免费| 一级黄色免费大片| 老牛精品亚洲成av人片| 国产精品亚洲二区在线观看| 日韩黄色免费观看| 成人黄软件网18免费下载成人黄18免费视频 |