1樓:折恕瀧鸞
計算方法:運算子sizeof可以計算出給定型別的大小,對於32位系統來說,sizeof(char)
sizeof(int)
4。基本資料型別的大小很好計算,我們來看一下如何計算構造資料型別的大小。
c語言中的構造資料型別有三種:陣列、結構體和共用體。蠢正悔。
陣列是相同型別的元素的集合,只要會計算單個元素的大小,整個陣列所佔空間等於基礎元素大小乘上元素的個數。
結構體中的成員可以是不同的資料型別,成員按照定義時的順序依次儲存在連續的記憶體空間。和陣列不一樣的是,結構體的大小帶正不是所有成員清如大小簡單的相加,需要考慮到系統在儲存結構體變數時的位址對齊問題。看下面這樣的乙個結構體:
struct
stu1int
i;charc;intj;
結構體指標陣列和指標陣列的區別
2樓:圖靈使者波比
結構體指標陣列:存放的指標,這些指標指向的型別是結構體型別。
陣列指標:存放的也是指標,指標指向的型別和定義坦薯的陣列讓激者的型別是一致的。
這兩種結構存放的指標都和定義的型別有關。都是指向定義鉛餘的資料結構的型別。
3樓:
可以舉個例子看看。
4樓:飲馬黃河源
結構體指標指向的是結構體,指標陣列是陣列元素為指標的陣列。
舉例說明定義同型別結構變數,結構指標和結構陣列
5樓:神話夢碎
1、定義上的區別:
陣列是同型別資料的集合;結構體可以是同型別也可以是不同型別資料的集合。
舉例如下:int a[5]; // 陣列a的5個元素都是int型別。
struct stu
std; // 結構體std的三個成員分別是int型、char型和float型,資料型別不同。
2、呼叫時候的區別。
資料是直接用形如「陣列名[下標]」的方式呼叫,如a[3],表示陣列a的第4個元素(陣列下標從0開始);
結構體是用結構體成員運算子來呼叫的,如:,表示呼叫結構體std中的num變數。
結構體指標陣列問題?
6樓:汗朗楊柔靜
答案是沒有區別,因為陣列也是一種指標(乙個指向陣列中第乙個物件的指標)。stu[0]<=stu+0),stu[1]<=stu+1)
所以pstu
stu;結果pstu指向stu的第乙個結構體。pstustu;結果pstu指向整個stu陣列,但陣列相當於乙個指向第乙個結構體的指標,所以pstu還是指向了stu的第乙個結構體。
指向陣列的第乙個物件就相價於指向整個陣列(陣列其它物件的訪問:stu[1]或者*(stu+1))。
這個結論其實適用還於所有型別的陣列,即:
intstu[50];
int*pstu;
那麼pstu
stu;和pstu
stu;也是等價的。
定義結構體指標,結構體指標中有成員為指標變數,那麼此結構體變數指向指標變數地址是什麼意思
代表的就是指標m所指向的地址。你的指標m還沒具體指向喲 m m是非法的,m.m才是正確的!m.m只是一個整形的指標,那就要看你指向哪一個整形的數了。定義一個結構體變數stu,成員包括學號,姓名,性別,成績,定義一個指標變數p指向該結構體變數stu include include using name...
c結構體中如果含有其他結構體陣列怎麼初始化?求大神指教
將a suba new a 10 改為 a suba 10 即可.此處 a 代表型別,suba代表變數名 類似int arr 10 寫成 int 10 arr 明顯錯誤 c 中結構體如何定義?結構體的成員中含有陣列 struct b 程式呼叫時 採用 b ab ab.suba new a 10 的方...
指標型別與指標所指向的型別指標型別與指標所指向的型別
不一定要相同。以前的機器有near和far指標,現在的機器一般都是32位指標。也就是說計算機用一個32位地址值定址。所以,所有指標其本身是佔用long位元組大小的。指標型別其實是告訴編譯器怎麼解釋指標所指向物件。當一個物件有資料成員,或者可以拆分成多部分資料物件時,可以做指標的型別轉換。不一定。例i...