結構體的初始化巢狀複製陣列指標

2021-09-29 04:28:13 字數 2746 閱讀 7070

一、結構體示例及巢狀結構體

#include

#include

#include

using

namespace std;

//定義乙個結構體

struct student

;//結構體巢狀

struct _class

;int

main

(void);

printf

(,school.name,school.age,school.tel)

;//方式二 定義的時候我們可以指定初始化的屬性 vs/vc 不支援,但 gcc 是 支援的

//struct student s1 =;

//方式三 單獨初始化每乙個屬性

struct student s2;

strcpy

(s2.name,

"張三");

s2.age =

15;

s2.tel[0]

='\0'

;printf

(, s2.name, s2.age, s2.tel)

;//巢狀輸出

struct _class c1=,

};printf

(,c1.lilei.name,c1.lilei.age,c1.lilei.tel)

;system

("pause");

return0;

}

二、結構體的使用複製

#include

#include

using

namespace std;

struct student

;int

main

(void

)

三、結構體陣列

#include

#include

using

namespace std;

struct student

;int

main

(void

)

四、結構體指標

#include

#include

#include

using

namespace std;

struct student

;int

main

(void);

printf

("姓名為:%s 性別:%s 年齡:%d \n"

,a.name,a.***==

'm'?

"男":

"女",a.age)

;//結構體指標

struct student *b=

&a;//(第一種)

printf

("姓名為:%s 性別:%s 年齡:%d \n",(

*b).name,

(*b)

.***==

'm'?

"男":

"女",

(*b)

.age)

;//(第二種)

printf

("姓名為:%s 性別:%s 年齡:%d \n"

,b->name,b-

>***==

'm'?

"男":

"女",b-

>age)

;system

("pause");

return0;

}

五、結構體通過函式傳值

#include

#include

#include

using

namespace std;

struct student

;//形參是結構體變數,值傳遞

struct student func

(struct student p,

int num)

//形參使用結構體指標

void

func2

(struct student *p,

int num)

//形參使用引用

void

func3

(struct student &p,

int num)

struct student &

func4

(struct student p,

int num)

intmain

(void);

//第一種

//init=func(init,10);

//cout << init.age << endl;

//第二種

//func2(&init,15);

//cout << init.age << endl;

//第三種

//func3(init,20);

//cout << init.age << endl;

//第四種

init=

func4

(init,30)

; cout << init.age << endl;

system

("pause");

return0;

}//注意: 一般不建議把結構體直接作為函式引數。 因為結構體的 size 比較大,直接傳遞,消耗效能! 解決方案:(使用指標和引用,優先使用引用)

陣列,結構體初始化 0

一直以為 int a 256 是把a的所有元素初始化為0,int a 256 是把a所有的元素初始化為1.除錯的時檢視記憶體發現不是那麼一回事,翻了一下 the c programming language 總算有定論。pdf的竟然不然複製,就把它這章翻譯了,如下 5.2.1 陣列初始化 陣列可以用...

結構體初始化 指定初始化

參考 c99支援結構的指定初始化專案,其語法與陣列的指定初始化專案近似。只是,結構的指定初始化專案使用點運算子和成員名 而不是方括號和索引值 來標識具體的元素。例如,只初始化book結構的成員value,可以這樣做 struct book surprise 可以按照任意的順序使用指定初始化專案 st...

結構體陣列的指標初始化與記憶體釋放

結構體如下 typedef structstudent int num char name tom,lily 如果定義成tom的形式,不需要為結構體分配記憶體,但是需要對name分配記憶體 tom.name char malloc sizeof char n 使用完畢要釋放記憶體 free tom....