C語言結構體賦初值

2021-09-28 23:40:44 字數 587 閱讀 6400

舊的c標準不支援在定義結構體的時候賦值,例如vs2010和vc++6.0

之前我發現我寫的在vs2019上執行正常的程式複製到vc6上就報錯,一方面是因為舊的c標準不支援一些新函式比如scanf_s和get_s,另一方面是某些特性改變了,比如舊的c標準不支援在定義結構體的時候賦值,在定義結構體的時候並沒有分配空間,所以會報錯

比如下面這樣就會報錯:

typedef

struct student

;char name[7]

=;}stu;

而在vs2019中就不會報錯;

但是不是說一定不能賦初值了,還闊以使用建構函式

如下

typedef

struct student

; number =

100;

strcpy

(name,str);}

}stu;

建構函式使結構體在建立的時候能夠自動初始化,這樣就達到了賦初值的效果

(與之對應的還有析構函式,在程式結束的時候自動銷毀結構體

如果自己不定義的話編譯器是會自動提供建構函式和析構函式的)

c c 結構體賦初值小技巧

今天看到專案中對自定義結構體初始化方式有點陌生,特在此羅列一下可用的結構體初始化的方式。對結構體 struct a 有幾種初始化方式 第一種 struct a a 第二種 struct a a 第三種 struct a a1 linux核心喜歡用第一種,使用第一種和第二種時,成員初始化順序可變。第四...

c c 結構體賦初值的小技巧

今天看到專案中對自定義結構體初始化方式有點陌生,特在此羅列一下可用的結構體初始化的方式。對結構體 struct a有幾種初始化方式 第一種 struct a a 第二種 struct a a 第三種 struct a a1 linux核心喜歡用第一種,使用第一種和第二種時,成員初始化順序可變。第四種...

c語言中結構體型別變數型別,結構體變數名賦值

結構體的詳情參考本文件 這幾天看圖用領接表儲存圖時候,開始實現的時候發現對結構體的變數名賦值有些疑惑,疑惑的地方查了下,留做備份 此宣告宣告了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c 同時又宣告了結構體變數s1 這個結構體並沒有標明其標籤 struct s1 此宣告宣告了擁有3個...