首先介紹一下初始化、賦值、定義、宣告這四個概念。
初始化:建立變數並給它賦初值。初始化和賦初值不同。初始化=帶指定初始值的定義。乙個程式中,乙個變數只能初始化一次。如:int i=0;
賦值:擦除物件的當前值並用新值替代,在乙個程式中,乙個變數可以多次賦值。
定義:用來為變數分配記憶體空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義。例:int i;(單純定義) int i=0;(帶指定初始值的定義)
宣告:用來向程式表明變數的型別和名字。定義也是宣告:當定義變數時我們宣告了它的型別和名字。可以通過使用extern關鍵字宣告變數而不是定義它。例:extern int i;
**1:初始化結構體全域性變數,可以。
#include"ds.h"
/*定義結構體*/
typedef struct pospos;
/*在main函式外初始化結構體全域性變數*/
/*大括號只能在初始化結構體變數中使用,為結構體變數賦值哪怕是賦初值都只能對結構體中每個成員單獨賦值*/
pos begin=,end=;
int main()
**2:先定義結構體全域性變數,再對其賦值,不可以。
注:全域性空間中(函式體之外)只能執行定義和初始化,其他操作都不被允許。
#include"ds.h"
/*定義結構體*/
typedef struct pospos;
/*在main函式外先定義結構體全域性變數,再對其賦初值*/
pos begin,end;
begin.x=1; //賦值不允許出現在全域性空間中。編譯器會將它當做全域性變數定義來處理,於是會報告缺少型別識別符號
begin.y=1;
end.x=8;
end.y=8;
int main()
**3:在main中初始化結構體區域性變數,可以。
#include"ds.h"
/*定義結構體*/
typedef struct pospos;
int main()
,end=;
printf("%d,%d,%d,%d\n",begin.x,begin.y,end.x,end.y);
return 0;
}
**4:在main中先定義結構體區域性變數,再對其賦值,可以。
#include"ds.h"
/*定義結構體*/
typedef struct pospos;
int main()
**5:在main外先定義結構體全域性變數,在main內對其賦值,可以。
#include"ds.h"
/*定義結構體*/
typedef struct pospos;
/*在main函式外定義結構體全域性變數*/
/*在main函式中對其賦初值*/
pos begin,end;
int main()
C C 結構體初始化
c語言結構體初始化,可以如下四種 include int main int argc,const char argv 初始化的4種方式 1.定義的同時初始化 struct person p1 2.先定義再逐個初始化 struct person p2 p2.name ykd p2.age 18 p2....
C C 建構函式初始化結構體
通常我們初始化結構體使用stu.id 1 或在讀入時進行賦值scanf d stu.id 當結構體內變數很多時很不方便。我們可以使用建構函式來解決這個問題。普通定義的結構體會生成預設建構函式studentinfo 使得我們可以只定義結構體變數而不用賦值。如果想要自己提供初始化引數,下面介紹兩種做法 ...
結構體初始化 指定初始化
參考 c99支援結構的指定初始化專案,其語法與陣列的指定初始化專案近似。只是,結構的指定初始化專案使用點運算子和成員名 而不是方括號和索引值 來標識具體的元素。例如,只初始化book結構的成員value,可以這樣做 struct book surprise 可以按照任意的順序使用指定初始化專案 st...