結構體變數的定義和初始化
結構體成員的訪問
結構體傳參
結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數。
struct tag
variable-list;
例如描述乙個學生:
typedef
struct stu
stu;//分號不能丟
結構的成員可以是標量、陣列、指標,甚至是其他結構體。
有了結構體型別,那如何定義變數,其實很簡單。
struct point
p1;//宣告型別的同時定義變數p1
struct point p2;
//定義結構體變數p2
//初始化:定義變數的同時賦初值。
struct point p3 =
;struct stu //型別宣告
;struct stu s =
;//初始化
struct node
n1 =
,null};
//結構體巢狀初始化
struct node n2 =
,null};
//結構體巢狀初始化
struct s s;
strcpy
(s.name,
"zhangsan");
//使用.訪問name成員
s.age =20;
//使用.訪問age成員
那該如何訪問成員。 如下:
struct stu
;void
print
(struct stu* ps)
intmain()
;print
(&s)
;//結構體位址傳參
return0;
}
結構體傳參不發生降維,一般傳指標。
struct s
;struct s s =
,1000};
//結構體傳參
void
print1
(struct s s)
//結構體位址傳參
void
print2
(struct s* ps)
intmain()
上面的 print1 和 print2 函式哪個好些?
答案是:首選print2函式。 原因:
函式傳參的時候,引數是需要壓棧的。 如果傳遞乙個結構體物件的時候,結構體過大,引數壓棧
的的系統開銷比較大,所以會導致效能的下降。
結論: 結構體傳參的時候,要傳結構體的位址。
C語言初階 函式
數學中我們常見到函式的概念。但是c語言中的函式是什麼呢?維基百科中對函式的定義 子程式 c語言中函式的分類 庫函式自定義函式 為什麼會有庫函式?開發效率高 穩定性好。這裡我們簡單的看看 www.cplusplus.com 簡單的總結,c語言常用的庫函式都有 自定義函式和庫函式一樣,有函式名,返回值型...
C語言結構體
1.1.1 結構概念 1 結構存在的意義 存在是合理的,許多事物的存在是在不斷解決問題引入的,當然有更好的方法出現時改變也是合理的。在實際問題中,一組資料往往具有不同的資料型別。例如,在學生登記表中,姓名應為字元型,學號可為整型或字元型,年齡應為整型,性別應為字元型,成績可為整型或實型。顯然不能用乙...
C語言 結構體
宣告乙個結構體型別 struct 結構體名 成員表列 定義結構體變數的方法 1 先宣告結構體型別再定義變數名。在定義了結構體變數後,系統會為之分配記憶體單元.例如 struct student student1,student2 2 在宣告型別的同時定義變數,例如 struct 結構體名 成員表列 ...