關於結構體變數等於0的問題

2021-07-14 11:32:05 字數 700 閱讀 9345

今天看到幾行**:

if(!a)

else

其中a是結構體變數,猶豫了一下,這麼簡單的東西不應該啊,因此做個學習。

有如下結構體:

typedef struct  lsafccdatawritereqtag 

lsafccdatawritereq;

我們可以直接用下面的**將結構體變數設定為0:

lsafccdatawritereq req = ;

上面這行**相當於下面這行**:

memset(&req, 0, sizeof(lsafccdatawritereq));
實際上,如果req是全域性的或者靜態的編譯器就預設初始化為0, 如果區域性的(棧上分配)則為隨機值。

如果在棧上分配這個結構並且只初始化第乙個字段,如:

lsafccdatawritereq   req   =   ;
那麼req剩下的字段預設初始化為0(不是隨機值!)

實際上,陣列同樣是這樣,如果棧上的陣列沒有初始化,則為隨機值,如果初始化了第乙個變數或者前幾個變數,則後面的變數預設初始化為0。

本文是根據本帖整理而來。

【2016-07-06】

結構體 結構體變數 結構體指標的基本問題

注意 以下都是32位的系統 一 結構體定義 第乙個問題 下面兩個 struct human struct human 這兩個結構體是否相同?答案 不一樣 原因 根據c語言結構體的機制,我們為結構體變數分配乙個連續空間時,總是以結構體中最大位元組長度型別的整數倍分配。第乙個的記憶體分布圖 length...

C 關於結構體變數和結構體指標變數函式傳遞值得問題

2014年5月29日10 13 35 關於結構體變數和結構體指標變數函式的值傳遞 include includestruct stduent void inputstduent struct stduent pst 輸入函式 void onputstduent struct stduent stu ...

C 結構體變數的引用 結構體變數引用

c 對結構體變數可以在定義時指定初始值。struct studentstudeng1 c 在定義了結構體變數以後,可以引用這個變數。可以將乙個結構體變數的值賦給另乙個具有相 同結構的結構體變數。student1 student2 可以引用乙個結構體變數中的乙個成員的值。student1.num 表示...