/* 結構體 : 保存一組類型不一樣的數據; 定義格式 : 1,定義結構體類型後,再定義結構體變量 : struct attr_type_name {attr_type attr_name;......};struct struct_name struct_var_name; 2,定義結構體類型的同時,定義結構體變量 : struct attr_type_name {attr_type attr_name;......}struct_var_name; //結構體類型名稱可省略不寫,但這樣的結構體類型是一次性的; 初始化 : 1,定義結構體類型的同時,定義結構體變量,並進行初始化 : struct attr_type_name {attr_type attr_name;......}struct_var_name = {.atrr_name = attr_value,.....}; 2,定義結構體類型後,再定義結構體變量並進行初始化 : struct attr_type_name {attr_type attr_name;......};struct struct_name struct_var_name = {.atrr_name = attr_value,.....}; 3,定義結構體類型後,再定義結構體變量,以後在進行初始化 : struct attr_type_name {attr_type attr_name;......};struct struct_name struct_var_name;struct_var.atrr.name = attr_value; 結構體在內存中的存儲細節 : 與數組相似,不一樣的是在定義結構體類型時,並不會分配內存空間,只有在定義結構體變量時,纔會分配內存空間; 結構體變量地址 : 爲結構體變量第0個屬性的地址,並無保存在結構體變量名稱中; 結構體變量在內存中的實際存儲原則 : 原則 : 按照結構體中佔用內存最大的屬性佔用的內存的倍數爲結構體變量分配內存; 也即會按照佔用內存最大的屬性佔用的內存爲每個屬性分配內存,並查看其剩餘內存是否足夠容納下一個屬性,若是足夠,則直接裝入下一個屬性,若是不夠,從新分配一個最大內存, 裝入該屬性,至於上一個屬性的剩餘內存仍屬於該結構體變量,但至此將其空置不在使用; 結構體類型或變量的做用域 : 自定義位置起至return或"}"結束 //注 : 局部變量在不一樣做用域內,可同名;全局變量做用域爲自定義位置起至文件末尾; 指向結構體變量的指針 : 定義格式 : struct struct_type_name *var_name; //注 : "."的運算級要高於"*" 經過指向結構體的指針訪問結構體變量的另類方法 : 指向結構體變量的指針 -> 屬性; 結構體數組 : 定義格式 : struct struct_type_name 數組名稱[元素個數]; 結構體嵌套 : 結構體中嵌套一個結構體; 結構體和函數 : 當把結構體變量做爲實參傳值給形參時,是進行值傳遞,函數內部修改結構體變量對實參沒有影響; */