關於C語言中結構體定義的乙個小問題

2021-07-03 19:14:09 字數 406 閱讀 4595

首先,有如下**:

test.c

struct a;

struct b;

編譯它:gcc -c test.c

因為在定義struct a的時候,編譯器檢測不了struct b的長度,即佔多少記憶體。

如果我們把**改為:

struct a;

struct b;

再次編譯它:gcc -c test.c

這一次編譯通過,因為在定義struct a的時候,struct b ×的長度是確定的(32位系統中任意型別的指標長度都為四個位元組),因此後面定義struct b的時候它的長度也是確定的。

總結:其實所謂定義結構體就是定義某一長度的一種新的型別而已。

關於C語言中定義結構體問題

1 c語言中定義結構體的語法是 struct 結構體名 2 在定義了結構體以後,要想使用該結構體,還需要進行結構體變數的宣告,才能在程式中使用該結構體,c語言中定義結構體變數的語法是 1 struct 結構體名 結構體變數名 另外也可以在定義結構體的時候,直接在後面宣告結構體變數,如下的形式 2 s...

關於C語言中的結構體對齊

關於c語言中的結構體對齊 1 什麼是位元組對齊 乙個變數占用 n 個位元組,則該變數的起始位址必須能夠被 n 整除,即 存放起始位址 n 0,對於結構體而言,這個 n 取其成員種的資料型別佔空間的值最大的那個。2 為什麼要位元組對齊 記憶體空間是按照位元組來劃分的,從理論上說對記憶體空間的訪問可以從...

C語言中關於陣列和結構體

在c語言中使用陣列的時候要時刻注意陣列的範圍以及在程式執行過程中是否會出現陣列越界的情況,本篇說明根據在編寫pat乙級1004題目的 時所犯下的錯誤進行理解陣列。題中需要定義學號和姓名的陣列且學號和姓名不超過10個字元,我的錯誤定義陣列範圍為 char name 10 char course 10 ...