前置技能:點點指標
(1)一般形式
他的一般格式只這樣的(記得struct關鍵字喲):
struct 結構體名
; //注意不要忘記此處的;
比如我們要建立乙個人的結構體,它就至少包括,身高體重年齡名字等等資料,就可以如下構造:
struct human//(2)定義結構體型別的變數、指標變數和陣列定義結構體型別變數有以下三種方法乙個名字為human的結構體
;
方法一:在定義結構體型別時,同時定義變數。
struct human//方法二:先定義結構體型別,再定義該型別的變數乙個名字為human的結構體
stu1,*stu,stus[5];//
分別定義了該型別的普通變數,指標,和結構體陣列
struct human//方法三:用型別定義符typedef先給結構體型別名別名,再用別名定義變數乙個名字為human的結構體
;struct human stu1,*stu,stus[5]; //
分別定義了該型別的普通變數,指標,和結構體陣列
typedef struct human//這裡的typedef就是把human這個型別的結構體,命名為了stu,stu就等價於struct human了。乙個名字為human的結構體
stu;
stu stu1,*stu,stus[5]; //
分別定義了該型別的普通變數,指標,和結構體陣列
typedef還可以把一些型別名很長的簡化,比如long long可以變成ll。
typedef long long ll;
注意:別把結構體型別跟變數弄混了。
1.型別:不分配記憶體;變數:分配記憶體;
2.型別:不能賦值、訪問、運算;變數:可以;
3.結構體可以巢狀;
4.結構體成員名與程式中變數名可相同,不會混淆。
巢狀結構體就是可以在乙個結構體了,包含另乙個結構體的型別的。
typedef long(3)給結構體變數賦初值一般格式:結構體型別 結構體變數名 = ;long
ll;struct
date;
struct
studentstu;
struct[student] stu[
2]=,};
#include struct human//乙個名字為human的結構體
方法二:
struct(4)引用結構體變數中的成員的訪問a.結構體變數名·成員名:stu1.namestudent;
struct student stu = ;
b.結構體指標變數—>成員名:ps—>name
c.(*結構體指標變數).成員名:(*ps).name
d.結構體變數陣列名.成員名:stu[0].name
注:1.求結構體型別資料的位元組數 sizeof(變數名或型別名);
大概就是這些把,emmm建構函式哪些好像是c++的?忘了,下次更新就接著講鍊錶把。。
王老師 結構體 第二講
1.動態申請記憶體塊,原型 void malloc int x 功能 申請大小為x的記憶體塊,返回所分配記憶體起始位址或空指標.該空間是在堆中分配的.釋放記憶體 void free void p p所指的記憶體區域一定是由函式malloc分配的.2.定義新型別名 typedef 復合說明項 其好處在...
結構體 結構體變數 結構體指標的基本問題
注意 以下都是32位的系統 一 結構體定義 第乙個問題 下面兩個 struct human struct human 這兩個結構體是否相同?答案 不一樣 原因 根據c語言結構體的機制,我們為結構體變數分配乙個連續空間時,總是以結構體中最大位元組長度型別的整數倍分配。第乙個的記憶體分布圖 length...
熟悉結構體 結構體的記憶體對齊
結構的宣告注意問題。結構體成員的訪問 結構變數的成員是通過點操作符 訪問的。如果是結構體指標,則用 結構體的自引用 struct node 結構體內存對齊 為什麼要存在記憶體對齊?1.平台問題 移植原因 不是所有的硬體平台都能訪問任意位址上的任意資料的 某些硬體平台只能在某些位址處取某些特定型別的資...