關於struct的初始化的說明

2021-06-22 19:46:22 字數 845 閱讀 5323

定義乙個結構體變數當然可以按照普通的方式進行初始化。

但是有的時候需要為struct的變數在heap中動態分配空間。 例如:

struct demo

;

使用如下語句動態分配空間的時候, 有兩種辦法:

方法一:

demo* demoptr = new demo;
法二:

demo* demoptr = new demo();
這兩種方式的區別區別如下:

使用 new demo的時候,demo後面沒有括號, 稱為 default initialization(注意不是default constructor, 要注意區分), 這是預設的初始化.  該變數的各個field被初始化為隨機的數。

使用new demo()的時候, demo後面右括號, 稱為default constructor(預設建構子), 此初始化的方法稱為value initialization, 得到的是zero-initialized chunk of memory - all fields in this case will be zeros.。

上述的規則源於我們沒有定義demo的constructor, 當然我們也可以定義乙個, 不過很少有人這樣做。

#include using namespace std;

struct demo ;

int main()

執行結果為:

struct的初始化

在android的底層裝置定義中,會出現很多這樣的 結構體初始化專案 裝置檔案操作方法表 static struct file operations hello fops 這就是指定初始化在linux裝置驅動程式,它源自iso c99標準。這種方式的優勢就在於由此初始化不必嚴格按照定義時的順序。已知...

結構體struct的初始化

在c語言中,對結構體的初始化,可以有一下三種。struct test int main struct test t2 struct test t3 printf t1.a d,t1.b d n t1.a,t1.b printf t2.a d,t2.b d n t2.a,t2.b printf t3....

c語言 struct 的初始化

struct資料有3中初始化方法 順序,c風格及c 風格的亂序。1 順序 這種方法很常見,在一般的介紹c的書中都有介紹。順序初始化的特點是 按照成員定義的順序,從前到後逐個初始化 允許只初始化部分成員 在被初始化的成員之前,不能有未初始化的成員。eg struct user oneuser 2 亂序...