**於:鏈結,
struct結構體型別是struct student,因此,struct和student都不能省略。//但實際上,我用codeblocks執行時,下面變數的定義,不加struct 也是可以的。student
;struct
student stu;
struct student stuarray[10
];struct student *pstru;
struct這種情況時,後面還可以再定義結構體變數。結構體型別是struct studentstudent
stu,stuarray[
10],*pstu;
struct這種情況下,之後不能再定義其他變數。stu,stu[
10],*pstu;
typedef structstudent是乙個具體的結構體型別,唯一標識。這裡不用再加structstudent;
student stu,stu[
10],*pstu;
使用new動態建立結構體變數時,必須是結構體指標型別。訪問時,普通結構體變數使用使用成員變數訪問符"."
,指標型別的結構體變數使用的成員變數訪問符為"->"
。
注意:動態建立結構體變數使用後勿忘delete。
#include using三種結構體初始化方法:namespace
std;
struct
student
stu,stuarray[
10],*pstu;
intmain()
要點:什麼都不寫就是使用的結構體自帶的預設建構函式,如果自己重寫了帶引數的建構函式,初始化結構體時如果不傳入引數會出現錯誤。在建立結構體陣列時,如果只寫了帶引數的建構函式將會出現陣列無法初始化的錯誤!!!
下面是乙個比較安全的帶構造的結構體示例
structnode //
無引數的建構函式陣列初始化時呼叫
node(int a, string b, char c) :data(a), str(b), x(c){}//
有參構造
};
//正如乙個類的物件可以巢狀在另乙個類中一樣,乙個結構體的例項也可以巢狀在另乙個結構體中。例如,來看以下宣告:結構體陣列宣告和定義
struct
node //
無引數的建構函式陣列初始化時呼叫
node(int a, string b, char c) :data(a), str(b), x(c){}//
初始化列表進行有參構造
}n[10];
structcosts 結構體有兩個 double 型別成員,wholesale 和 retail。item 結構體有 3 個成員,前 2 個是 partnum 和 description,它們都是 string 物件。第 3 個是 pricing,它是乙個巢狀的 costs 結構體。如果定義了乙個名為 widget的 item 結構體,則圖 3 說明了其成員。costs
;struct
item
widget;
巢狀結構體訪問的方式:
widget.partnum = "初始化結構體變數成員的最簡單的方法是使用初始化列表。初始化列表是用於初始化一組記憶體位置的值列表。列表中的專案用逗號分隔並用大括號括起來。123a";
widget.description = "
iron widget";
widget.pricing.wholesale = 100.0
;widget.pricing.retail = 150.0;
struct該宣告定義 birthday 是乙個 date 結構體的變數,大括號內的值按順序分配給其成員。所以 birthday 的資料成員已初始化,如圖 2 所示。date
;
也可以僅初始化結構體變數的部分成員。例如,如果僅知道要儲存的生日是8月23日, 但不知道年份,則可以按以下方式定義和初始化變數:
date birthday = ;
這裡只有 day 和 month 成員被初始化,year 成員未初始化。但是,如果某個結構成員未被初始化,則所有跟在它後面的成員都需要保留為未初始化。使用初始化列表時,c++不提供跳過成員的方法。以下語句試圖跳過 month 成員的初始化。這是不合法的。
date birthday = ; //非法
還有一點很重要,不能在結構體宣告中初始化結構體成員,因為結構體宣告只是建立乙個新的資料型別,還不存在這種型別的變數。例如,以下宣告是非法的:
//非法結構體宣告
struct date
;
因為結構體宣告只宣告乙個結構體「看起來是什麼樣子的」,所以不會在記憶體中建立成員變數。只有通過定義該結構體型別的變數來例項化結構體,才有地方儲存初始值。
2.訪問
定義結構體:
struct mytree
mytree(int val):left(null),right(null),val(val){}
};
一般結構體變數的訪問方式:
int main()
可見,結構體中的變數,可以直接通過"."
操作符來訪問。
而對於結構體指標而言:必須通過"->"
符號來訪問指標所指結構體的變數。
int參考:main()
Go 結構體,定義結構體型別,struct
demo.go 定義結構體型別 package main import fmt 定義結構體型別 在函式外部定義 全域性的 可以在整個專案中使用 type student struct func main 按結構體定義時的成員順序進行顯示。定義結構體變數並賦值 第二種方式 var stu2 stude...
什麼結構體 struct
簡單的來說,結構體就是乙個可以包含不同資料型別的乙個結構,它是一種可以自己定義的資料型別,它的特點和陣列主要有兩點不同,首先結構體可以在乙個結構中宣告不同的資料型別,第二相同結構的結構體變數是可以相互賦值的,而陣列是做不到的,因為陣列是單一資料型別的資料集合,它本身不是資料型別 而結構體是 陣列名稱...
C語言 結構體struct 結構體對齊
1 定義乙個結構體 順便例項結構體變數 struct tag 結構體型別名 struct tag 這兩者共同構成了結構體型別 單獨的tag 結構體型別名 不能稱之為結構體型別 結構體變數名 2 定義的同時使用typedef 相當於定義結構體 為結構體起新名字 typedef struct tag 結...