結構體定義 結構體指標相關用法

2021-10-04 12:19:00 字數 2842 閱讀 7921

結構體:是一種自定義資料結構。

結構體的形式:

struct 型別名

;結構體的結尾必須加上分號

結構體的定義以及初始化

struct student//定義student資料型別

;//定義完成,其地位和內建型別一樣

int main

;struct student stu2;

struct student stu3=

;//只初始化一部分,剩餘部分為0

}

結構體內可定義結構體,結構體定義完成後,起作用和c語言中內建的資料型別相同。

struct a

;struct b

;//結構體通過指標呼叫自身的定義舉例

struct node

對結構體的成員進行訪問:結構體普通變數通過 「.」 訪問其成員

int

main()

;//修改年齡

stu.age=18;

//修改姓名

strcpy

(stu.name,

"zhang");

//輸出stu的資訊

printf

("age=%d , name=%s\n"

,stu.age,stu.name)

;}

**通過指針對結構體進行訪問:**結構體指標變數通過 「->」訪問其成員

int

main()

;struct student *ps=

&stu;

//修改年齡

*ps.age=18;

//error 優先順序的問題 .的優先順序大於* 應該是:(*ps).age=18;

(*ps)

.age=18;

//ok

ps->age=18;

//ok

}

加強對 . 和 -> 的理解:

struct a

;struct b

;//通過變數aa或者bb,訪問其各自的成員

intmain()

結構體作為引數進行傳遞時,使用指標進行傳遞,減小傳參時浪費的空間資源

//void show(struct student stu)//設計不好,傳遞的資料太大(實參24個位元組),使用指標

void

show

(const

struct student *p)

intmain()

;show

(&stu)

;return0;

}

通過陣列訪問結構體

void

show

(const

struct student *p,

int len)

printf

("\n");

}int

main()

; stu[2]

.age=20;

show

(stu,

sizeof

(stu)

/sizeof

(stu[0]

));return0;

}

結構體的應用例項:有3個候選人,每個選民只能投票1個人,要求編乙個統計票選的程式,先後輸入備選人的名字,最後輸出每個人投票結果。

#include

#include

struct person

;//統計票數

void

ticket

(struct person *arr,

int len)}}

}void

show

(const

struct person *arr,

int len)

}int

main()

;ticket

(arr,

sizeof

(arr)

/sizeof

(arr[0]

));show

(arr,

sizeof

(arr)

/sizeof

(arr[0]

));return0;

}

c中有兩個自帶的符號,分別為 和 -> 。舉例:p[i]==(p+i) ; p->age==(*p).age

將分數由高到低輸出的學生的資訊:

#include

#include

struct student

;//從鍵盤讀取學生資訊

void

input

(const

struct student *arr,

int len)

}//學生分數由高到低排序

void

sort

(struct student *arr,

int len)}}

}void

show

(const

struct student *arr,

int len)

}int

main()

結構體型別 結構體變數 結構體陣列 結構體指標

問題1 一元錢換為1 2 5分的硬幣,有多少種兌換方?本題要點分析及參 對各種可能情況進行一一測試。這是實現迴圈的一種方式 窮舉法 但實際上只有只有餘額才能兌換成其它面值的硬幣 main 注意換行的控制和每列的對齊 問題3 某鐵路線上有10個站,需要準備多少種客票?main b a 0 p prin...

如何定義結構體指標

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

結構體定義 typedef struct 用法詳解

typedef是型別定義的意思。typedef struct 是為了使用這個結構體方便。具體區別在於 若struct node 這樣來定義結構體的話。在申請node 的變數時,需要這樣寫,struct node n 若用typedef,可以這樣寫,typedef struct node node 在...