1.首先構建乙個結構體
typedef
struct
num;
2.然後使用該結構體進行定義
/*1.指標定義*/num * i =
(num *
)malloc
(sizeof
(num)*5
);if(
!i)exit(-
1);/*2.非指標定義*/num j[5]
;
3.我認為輸出的val值應該都為0,因為建立結構體時就給val賦值,但是結果卻是下面這樣的
4.結論:
我覺得應該是指標是指向一塊空間位址,上述指標就是指向一塊型別為num型的空間位址,但是目標空間裡面還未初始化,所以val值不為0;但是非指標型別就是很明確的劃分了一塊空間用來建立num型的資料,所以裡面的val值為0。前者是指向一塊num型位址,並非建立乙個num資料,這塊位址可能始終沒有num型資料;後者則是建立乙個確定的num型資料。
結構體 結構體變數 結構體指標的基本問題
注意 以下都是32位的系統 一 結構體定義 第乙個問題 下面兩個 struct human struct human 這兩個結構體是否相同?答案 不一樣 原因 根據c語言結構體的機制,我們為結構體變數分配乙個連續空間時,總是以結構體中最大位元組長度型別的整數倍分配。第乙個的記憶體分布圖 length...
結構體對齊問題
1,比如 structa structb sizeof a 6,sizeof b 8,為什麼?注 sizeof short 2,sizeof long 4 因為 成員對齊有乙個重要的條件,即每個成員按自己的方式對齊.其對齊的規則是,每個成員按其型別的對齊引數 通常是這個型別的大小 和指定對齊引數 這...
結構體賦值問題
首先定義兩個結構體 struct udpdata struct scanudpdata short itotaly long ltotalx udpdata udpdata int callnum udpthread收資料的次數 然後給結構體賦值 pdata new udpdata 注意 此處要ne...