C 如何定義結構體及訪問結構體的成員

2021-07-13 13:14:33 字數 1432 閱讀 7725

構結構的關鍵字 struct,struct型別是一種值型別通常用來封裝小型變數組,如果衝結構建立乙個物件並將物件賦給某個變數 則變數包含結構該變數放入結構的全部值,如果複製包含變數的結構,則將該複製所有的值,對新副本所作的任何修改都不會改變就副本的值(值型別的複製,自複製給其他的值,改變原來結構的值)

結構的特點:結構不是引用型別,而是值型別。結構的例項化不能用new運算子。結構可以宣告建構函式但是必須帶引數的結構。結構不能從另外乙個結構或類來繼承,而且不能作為乙個類的基類。結構可以作為null的型別,因而可向其符null值。

結構的宣告

struct mystr

結構的訪問修飾符可以是public,internal,預設修飾符為internal。

結構中的成員訪問修飾符可以是private,public但不可以是protect(結構體不能別繼承,只能連線介面),呼叫結果只能是public才能呼叫

結構化例項兩種方式

struct mystr

在main方法中呼叫

struct person

public string name

public bool ***

public void eat(string name)

", name);}}

在main方法中呼叫

person p = new person();//呼叫結構的中欄位

p.name = "老桂";

p.age = 12;

p.eat("面");

p.*** = true;

console.writeline(p.name);

console.writeline(p.age);

console.writeline(p.***);

console.writeline(i);

結果為 :name=老桂,age=12,今天吃的面,***=true,

從另外乙個結構複製結構中的字段並且重新name欄位賦值

person ap = p;

ap.name = "小鬼";

console.writeline(ap.***);

console.writeline(ap.name);

console.writeline(ap.age);

ap.eat("fanaaaaaf");

結果為:name=小鬼,***=true,age=12,今天吃的fanaaaaaf

字段:普通字段:如果有建構函式,必需在建構函式中初始化,如果沒有建構函式,欄位則自動初始化。

靜態字段:常量欄位不需要在建構函式中初始化。

結構中,靜態欄位和常量必需用結構名來呼叫。

(屬性也是變數)

例:struct person

}console.writeline(person .age );

console.writeline(person .str );

結構體及結構體排序

1 定義的方法struct node 用strut定義乙個結構體,node是結構體的名字,可以自己瞎取。p 1000 這樣你就定義了乙個神奇的陣列!沒錯,它就是node型陣列!上面的 還在結構體的末尾定義了乙個該型的陣列,其實這個陣列不一定要有,而且也可以在主函式中定義,但是感覺上用的比較多,而且這...

如何定義結構體指標

想要定義結構體型別的指標一定要用typedef 寫法1 typedef struct node nodeptr nodeptr head new node node head1 new node 兩種寫法等價 寫法2 struct node typedef node nodeptr nodeptr ...

結構體的訪問

struct student private void label1 click object sender,eventargs e 問題一 struct student 為什麼要寫在那個地方,貌似不屬於任何乙個裡面。寫在給的兩個模版之間 我真的不能理解。問題二 這裡的public string a...