一、結構體示例及巢狀結構體
#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....