結構體問題

2021-09-29 07:21:02 字數 609 閱讀 7993

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...