C語言全域性變數的初始化

2021-06-22 18:39:51 字數 545 閱讀 1436

本意是想定義乙個全域性結構體變數,並設定其成變數的值。

typedef struct

a_t;

a_t  a;

a.a = 1;// error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token

a.b = 2;

// error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token

int main(void)

錯誤分析:

在全域性空間(即函式體之外)只能執行資料型別、變數、函式等的定義及變數的初始化,其他任何操作都不被允許。

typedef struct

a_t;

a_t   a=;

//定義全域性變數a並初始化成員變數。

int main(void)

a.a = 3;

//函式內對全域性變數中成員變數重新設值。

c語言中全域性變數的初始化

c語言中區域性變數可以用型別相符的任意表示式來初始化,而全域性變數只能用常量表示式初始化,尤其對於全域性變數來說,不能用乙個數學函式或者其他的需要在執行時才能計算出結果的表示式進行初始化。因為程式開始執行時要用適當的值來初始化全域性變數,所以初始值必須儲存在編譯生成的可執行檔案中,因此初始值在編譯時...

未初始化全域性變數

未初始化全域性變數,這名字就很直白,就是 c 程式中定義成全域性作用域而又沒有初始化的變數,我們知道這種變數在程式執行後是被自動初始化為 全0 的。編譯器編譯的時候會將這類變數收集起來集中放置到 bss 段中,這個段只記錄了段長,沒有實際上的內容 全是0,沒必要儲存 在程式被裝載時作業系統會為它分配...

關於未初始化全域性變數

前幾天發現未初始化全域性變數一些特性,後來在一篇部落格上發現有人說過這個問題 這是原博文位址 blog.csdn.net liuqiaoyu080512 article details 8455652 然後結合原博文,自己又做了幾個實驗 以下算是自己實驗一遍以後的總結 首先,自己曾經以為未初化的全域...