1、結構體:使用者自己建立不同資料型別組成的組合型的資料結構。
struct student
;struct student student1;
// struct為宣告結構體型別的關鍵字,student為結構體名
// struct student 為乙個結構體型別
// student1為struct student 型別的變數
或者在定義結構體型別的同時定義結構體變數:
struct student
student1,stuednt2;
比較 struct 和 typedef struct:
typedef struct student //也可以寫成typedef struct
stu;
typedef 本質是對已有的型別進行重新命名,對比 typedef int int32,所以在這裡stu 等同於 struct student。這兩個都代表相同的資料型別,就可以用stu代表struct student結構體型別,所以如果要定義結構體變數,直接stu student1即可。(stu 用來定義變數,stu 是型別而不是變數)
但是對於
struct student
;
如果我們要定義乙個結構體變數就必須 struct student student1這樣才算定義了乙個結構體變數,因為struct student 才是結構體型別
空結構體:在 vs2015 裡面不允許空結構體的存在,但是在 gcc 編譯器把空結構體的大小定義為0,這是個灰色地帶。
2、柔型陣列
— 柔型陣列即陣列大小待定的陣列
— c語言中可以由結構體產生柔型陣列
— c語言中結構體的最後乙個元素是大小未知的陣列
— 柔型陣列所占用的位元組大小僅僅和長度的型別有關
好處:動態決定陣列的長度
#include struct softarray
;int main()
基本格式:
struct softarray
;...
struct softarray* sa = null;
sa = (struct softarray* )malloc(sizeof(struct softarray)+sizeof(int)*5);
sa->len = 5;
例項程式:
#include #include struct softarray
;struct softarray* creat_soft_array(int length)
}return ret;
}void free_soft_array(struct softarray* sa)
void func(struct softarray* sa) }}
int main()
free_soft_array(sa);
return 0;
}
3、c語言中的聯合體 union聯合體裡面可以定義多個成員變數,在任何時刻,只有乙個成員變數有效。union是只分配最大成員的空間,而且所有的成員共享這個空間.
比如說空間裡面已經有乙個 int 值,你乙個 char 的只能是裡面乙個位元組的那個值。
#include struct a
;union b
;int main()
union的注意事項:union的使用受系統大小端的影響,我們一般的電腦系統都是小端系統,union 和 struct 差不多,就是意義不同。
在小端系統裡,1被儲存在低位址上面;
在大端系統裡,1被儲存在高位址上面。
小端模式,低位址儲存低位資料;大端模式,低位址儲存高位資料。
#include union a
a;int main()
分析:10 == 0000 1010;1 ==0000 0001
在小端模式 0000 0001 0000 1010,這樣就是低存低位,所以a.i = 266
在大端模式 0000 1010 0000 0001 0000 0000… 0000 0000,這樣就是低存高位
例題翻**
#include union a
a;int main()
分析:
先已知a.i = 299,也就是256+43,可以清楚的知道,a.c[0] = 43,a.c[1] = 1
如何判別大小端:
#include int system_mode()
sm; sm.i = 1;
return sm.c;
}int main()
else
return 0;
}
特殊情況:
原因在於:我初始化了小的記憶體,但是我無法保證 int 裡面的其餘3個位元組都是空的。導致出現得出的結果不是1而出現是大端系統的原因,所以最好初始化大的記憶體 = 1。
Hive中建立結構體 陣列以及map
row format delimited 分隔符設定開始語句 fields terminated by 設定欄位與字段之間的分隔符 collection items terminated by 設定乙個複雜型別 array,struct 欄位的各個item之間的分隔符 map keys termin...
陣列與字串以及結構體還有共用體
1陣列 1.普通宣告和初始化 int nums 3 2.只宣告 int num 3 這樣陣列裡的元素值是未知的 3.只宣告,然後賦值 int num 3 num 0 1 num 1 34 num 2 9 4.文藝青年的初始化 int nums 3 第0個元素賦值為89,其他預設為0 int nums...
c 結構體與函式 陣列 指標綜合案例1
案例1 學校正在做畢設專案,每名老師帶領5個學生,總共有3名老師,需求如何設計學生和老師的結構體,其中在老師的結構體中,有老師姓名和乙個存放5名學生的陣列作為成員,學生的成員有姓名 考試分數,建立陣列存放3名老師,通過函式給每個老師及所帶的學生賦值,最終列印出老師資料以及老師所帶的學生資料。incl...