C語言 結構體的使用

2021-10-07 23:52:32 字數 4551 閱讀 4122

#include

#include

#define number 5

#define name_len 64

void swap_int (

int*x,

int*y)

void

swap_str

(char

*sx,

char

*sy)

void

sort

(int num,

char str[

][name_len]

,int n)}}

}int

main

(void);

char name[

][name_len]=;

for(i =

0; i < number; i++

)sort

(height, name, number)

;puts

("\n按身高進行公升序排列。");

for(i =

0; i < number; i++

)return0;

}

使用結構體簡化**:

#include

#include

#define number 5

#define name_len 64

typedef

struct

student;

void swap_student (student *x, student *y)

void

sort_by_height

(student a,

int n)}}

}int

main

(void),

,,,,

};puts

("姓名 身高 體重 分數");

for(i =

0; i < number; i++

)sort_by_height

(std, number)

;puts

("\n按身高進行公升序排列。");

puts

("姓名 身高 體重 分數");

for(i =

0; i < number; i++

)return0;

}

結構體的命名空間

只要命名空間不同,就可以使用拼寫相同的識別符號(名字)。命名空間的分類有以下四種。

(標籤)名

小標籤 名

成員 名

一般性識別符號

int

main

(void

) x;

// 變數名

x:// 標籤名

x.x =1;

// 變數名.成員名

x.y =2;

// 變數名.成員名

return0;

}

注:

只要不屬於同乙個命名空間,即使在同一有效範圍內使用相同的名字,也不會產生任何問題。

typedef

struct

student;

上述結構體可以寫成如下形式:

struct student

;

該結構體形式的使用:

#include

#include

#define name_len 64

struct students

;int

main

(void

)

strcpy

(stu.name,

"vvcat");

// 直接賦值會報錯

如果寫成

stu.name =

"vvcat"

;//初始化錯誤

相當於

char str[5]

;str =

"vvcat"

;// 初始化錯誤

初始化也可以進行簡寫:

struct students stu;

strcpy

(stu.name,

"vvcat");

// 直接複製會報錯

stu.height =

175;

stu.weight =

62.5

; stu.score =

88;

簡寫方式:

struct students stu =

;

這樣一行就完成了多行的**賦值操作,使**更加簡潔。

如果不對結構體進行初始化:

#include

#include

#define name_len 64

struct students

;int

main

(void);

printf

("姓名 = %s\n"

, stu.name)

;printf

("身高 = %d\n"

, stu.height)

;printf

("體重 = %.1f\n"

, stu.weight)

;printf

("分數= %ld\n"

, stu.score)

;return0;

}

注:

結構體物件 o 中的成員 m 可以通過o.m來訪問。

宣告結構體時所賦的初始值的形式是,將各個結構體成員的初始值依次排列在{}裡面,並用逗號分割。未賦初始值的成員被初始化為0。

結構體成員和 -> 運算子

#include

#define name_len 64

struct student

;void

update_height_weight

(struct student *std)if(

(*std)

.weight >80)

}void

update_score

(struct student *std)

}int

main

(void);

update_height_weight

(&stu)

;update_score

(&stu)

;printf

("姓名 = %s\n"

, stu.name)

;printf

("身高 = %d\n"

, stu.height)

;printf

("體重 = %.1f\n"

, stu.weight)

;printf

("分數 = %ld\n"

, stu.score)

;return0;

}

在函式中,身高和體重可以通過以下表示式來訪問。

(

*std)

.height

(*std)

.weight

也可以通過 -> 運算子進行訪問

std -> height

std -> weight

在指標變數前加上指標運算子*,就表示該指標指向的物件實體。通過(*std).height 或 std -> height 等表示式可以表示std 指向的物件的成員。

注:

返回結構體的函式

#include

struct xyz

;struct xyz xyz_of

(int x,

long y ,

double z)

intmain

(void);

// 結構體初始化

s =xyz_of

(123

,123456

,12.34);

// 為結構體賦值

printf

("xyz.x = %d\n"

, s.x)

;printf

("xyz.y = %ld\n"

, s.y)

;printf

("xyz.z = %f\n"

, s.z)

;return0;

}

陣列和結構體在處理多個物件的集合方面具有諸多相同點,他們統稱為聚合型別。

int a[5]

, b[5]

;a = b;

// 賦值錯誤

struct student x, y;

x = y;

// 賦值成功

C語言的結構體使用

1 基本的建立結構體和使用 include include includestruct man void main struct man man1 man1.age 30 man1.name jam printf d,s n man.age,man.name printf d,s n man1.ag...

c語言 結構體的使用

結構體的定義形式為 struct 結構體名 結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可以不同,每個這樣的變數或陣列都稱為結構體的成員 member 請看下面的乙個例子 struct stu stu 為結構體名,它包含了 5 個成員,分別是 name num age gro...

C語言結構體與結構體指標的使用

c語言結構體 struct 是由一系列具有相同型別或不同型別的資料構成的資料集合。說的通俗一點就是乙個集合。c語言是一門面向過程的程式語言,而結構體的使用在某些層次上跟物件導向有點異曲同工之處了。下面回歸正題,學習一下結構體以及結構體指標的知識。一 結構體變數的定義和初始化 1 首先我們來看一下結構...