結構型別
列舉
列舉是使用者定義的資料型別,用來表示依此排列的常量(常量型別只能是 int,常量大小是從0到n)
列舉型別裡的名字通常不是真的使用,要使用的是大括號裡的常量名字。定義列舉的意義就是給這些常量定義一些名字
結構體enum colors
;//red=0...
voidf(
enum color c)
;int
main()
voidf(
enum color c)
//列舉也可以自定義常量
enum colors
;//此時red=0,yellow=1,green=5
自定義的復合的資料型別,在乙個資料型別中有多種不同的型別
結構體放在所有函式的外面時,可以被所有函式使用;放在某個函式裡面時,只能在那個函式的內部使用。
結構體也可以作為返回值返回。//定義方式1
struct point
;//別忘了最後的分號
struct point j;
//變數j的資料型別是point
j.x =1;
j.y =2;
//給j中的變數賦值
//定義方式2
struct pointj;
//將上述的兩步寫在了一起
//方式3
struct
j;//無名結構體,這樣寫就不能用此結構體來定義新變數了,僅適用於只想使用一次的結構體
//結構體賦初值
struct point j =
;struct point j =
;//如果沒有指定的值會預設0
p1 =
(struct point)
;//強制型別轉換 相當於初始化p1.x=10..
p2=p1;
//初始化p2.x=10..
//定義乙個指向結構體的指標
struct point *p_point =
&j;//定義指標時給出指標的型別。
//定義結構型別
typedef
struct _pointpoint;
point j;
//將結構他定義為乙個新的型別,就不用每次都打乙個struct了
//想要使函式中對傳入結構體的值進行儲存
//返回結構體
struct point
;struct point getstruct
(void
)int
main
(void);
y =getstruct()
;}//傳入指標
//更加有效,因為上述方法是傳值,要為新的函式內的結構體裡的結構型別開闢乙個記憶體空間,然後將傳入的引數乙個個複製過去,佔空間耗時間,所以大的結構體不推薦傳值
struct point *p =
&j;(
*p).x=
100;
//*p就是j 相當於j.x
p->x=
100;
//兩者等價,->就是結構變數中的成員,箭頭的左邊只能是指標!
struct point getstruct
(struct point *p)
void
output
(struct point p)
output(*
getstruct
(&y));
//y是乙個point型別的結構體,&y是結構體位址,相當於指標的值,getstruct(&y)是返回的那個指標p,*p就是取結構體裡的值
struct point studentspoint[3]
=,,}
;//定義了乙個結構體陣列
printf
("%d,%d"
,studentspoint[0]
.x,studentspoint[0]
.y);
//就會顯示99和100
struct rectangle
struct rectangle rec;
rec.point1.x=1;
rec.point2.y=2;
//巢狀再加陣列
struct rectangle rects,
},,}
};rects[0]
.point1.x //就是1
rects[0]
.point1.y //就是0 就是最裡面那個小括號,右邊那個小括號就是rects[0].point2.x和y
翁愷C語言程式設計 學習筆記5
變換看待方式,還有unsigned 在計算機內部,一串字元在現實中表示什麼取決於用什麼樣的方式去看待它,比如 d與 u同樣輸出同乙個位串,會不一樣。字面量,是在編譯器編寫介面裡的內容,可以有比如012表示8進製,編譯器會自動將其轉成10進製,但是這是編譯器這個層面的事情,在計算機底層只有2進製。進製...
翁愷C筆記 指標
指標應用場景 1.函式需要返回多個值,其中一些值可通過指標返回。傳入的指標引數其實是需要儲存帶回結果的變數 例程 include include void swap int a,int b int main void swap int pa,int pb 2.需要傳入較大的資料時用作引數 3.傳入陣...
C語言程式設計高階 翁愷 指標與字串
1.傳入函式的數組成了什麼?函式引數表中的陣列實際上是指標,sizeof a sizeof int 可以用陣列運算子來進行計算,以下四種函式原型等價。int sum int arr,int n int sum int int int sum int arr,int n int sum int int...