什麼是結構體
1、不同型別的變數集合
2、結構體的目的是為了描述乙個物件,為了把乙個物件描述清楚,必須要說出這個物件的很多屬性,為了表示這些屬性,就要用到不同的變數,且變數不止乙個。
工人:工號、姓名、性別、年齡、基本工資
如何來定義結構體
struct 結構體名
;
struct worker//定義乙個結構體,描述乙個工人
;
如何定義結構體變數:
1、 剛才定義的只是型別,並不是變數。
2、 在c程式有三種型別是已經做好的,只要拿來使用就可以了。 int char float
但是結構體在c裡面沒有,需要自己來定義
3、 剛定義的型別: struct worker
4、 定義結構體變數有三種方式:
1:在定義結構體的時候,就定義變數,這時定義的變數是全域性變數
2: 在定義結構體型別之後,再定義結構體變數
3:可以通過typedef這個關鍵字,為結構體變數取別名
struct worker//定義乙個結構體,描述乙個工人
w1,w2,w3;//定義了三個結構體變數
struct worker//這是在定義結構體型別
;如何輸出結構體變數的值
1、 由於結構體變數裡面會包含很多屬性,,所以要分別輸出,不能整體輸出
2、 格式: 結構體變數名.屬性名
3、 結構體變數雖然不能整體輸出,但是可以整體賦值
main()
,w2;//w1,w2它們屬性相同,但是屬性值不同
//如何輸出結構體變數的值
printf("%s,%s,%s,%d",w1.id,w1.name,w1.gender,w1.salary);
w3.id=w1.id;
w3.name=w1.name;
w3.gender=w1.gender;
w3.salary=w1.salary;
//或者
w3=w1;//整體賦值
int a,b;
}結構體陣列
main()
,w2=,
w3=
};//定義了乙個結構體陣列,名為a裡面包含5個元素,每個元素都是乙個結構體變數
int a[4]=;
printf("工號\t姓名\t年齡\n");
int i;
for(i=0;i<6;i++)
output(a,6);
}//結構體陣列中a[i]就代表乙個物件,它已經不在是乙個值了,所以我們應該用a[i].成員名
void output(wor a,int n)
}屬性為字串的不能直接比較大小,需要通過strcmp函式來比較。
a[i].***=="男"這是錯的
if(strcmp(a[i].***,"男")==0)
結構體學習筆記
以下記載了在初學結構體時犯下的一些錯誤。先來一些雜識 structf struct students void main basic knowledge 錯誤一 結構體內用本身定義實體 1 struct student 2 因為在結構體執行完之前,是沒有記憶體位址空間的。而第五行中定義了乙個實體,顯...
結構體和共用體學習筆記
為什麼需要結構體 傳統解決辦法 陣列是相同型別資料的集合。結構體可以存放不同型別的資料。結構體和結構體變數的區別和聯絡 1 結構體是自定義的資料型別,表示的是一種資料型別,2 結構體變數是乙個具體變數 int num1l int為資料型別,而num1是具體的int變數3 結構體變數在同一記憶體區域 ...
C學習筆記 結構體
結構體是簡單資料型別的綜合 struct man struct man m struct man m 要訪問結構體成員,要使用.操作符。m.age 結構在記憶體的大小是和結構成員最長的那個元素相關的 編譯器在編譯乙個結構的時候採用記憶體對齊模式 struct man sizeof struct ma...