C語言基礎(五)(結構體)

2021-08-13 19:34:00 字數 2688 閱讀 6634

// struct聲名結構體是必須有,infor是該種結構體的型別名,可自定義。

struct infor

;

struct data

;

struct infor stu;             //定義時也要有struct。

struct infor2

a, b[3], *c; //可以在宣告的同時定義變數。

//聲名結構體時沒有名字,聲名之後無法呼叫,只能聲名的同時定義變數,但編譯時不會報錯。

struct

s;//可以用typedef重新命名型別以方便定義變數

//在宣告時使用typdef,不寫變數名也可使用

typedef

struct

s, *p_s;

//s是該型別結構體的新型別名,p_s是指向該型別變數的指標的型別名

s a;

p_s p;

struct infor

; struct infor s1 = ;

//初始化時按成員順序賦值,不完全初始化時補0.

//a[0] = 'a', a[1] = 'b', a[2] = 'c', 其餘為0;

struct infor s2 = ; //單獨初始化

struct infor s3 = ; //單獨初始化時,後者可以將前者覆蓋。

struct infor *p_s = &s1;

struct infor

; struct infor s1 = ;

struct infor s2 = ;

struct infor *p_s = &s1;

//初始化之後賦值就必須對成員單獨一一賦值了。

s1.b = 18;

p_stu -> c = 16;

各成員的首位址均為自身所佔記憶體的整數倍,所以就有了記憶體補齊原則

- 預設對齊位元組: 結構體內 佔記憶體最多的成員 所佔位元組數

struct str1         // 7個位元組有效資料

s1; // 8

struct str2

s2; // 8

struct str3 // 6

s3; // 8

struct str4 // 10

s4; // 12

struct str5 // 10

s4; // 10

struct str1         

s1; //8

struct str2

s2; //12

struct str3

s3;

#pragma pack(n) // n為2的非負整數次冪,n=1時 即為不對齊

···#pragma pack()

#pragma pack(1)

struct

; //5位元組

#pragma pack()

struct

; // 12位元組,96位

標頭檔案部分內容:

/* internet address.  */

typedef uint32_t in_addr_t;

^unsigned

typedef uint16_t in_port_t; // 16的無符號short型別

struct in_addr

;/* structure describing an internet socket address. */

struct sockaddr_in

;

#include 

#include

#define port 1234

#define addr "172.25.254.3"

void set_struct (struct sockaddr_in *p)

int main(void)

#include 

typedef

int (*p_func)(int a,int b);

int add(int a,int b)

struct data

s;void set_func (struct data *s)

int ret_func (struct data *s)

int main(void)

#include 

#include

#include

typedef qwe

s;int main(void)

C 基礎 五 結構體

建立結構體 includeusing namespace std includestruct godv gg3 第三種建立方式 int main cout gg2 gg2.age gg2.name endl gg3.name godb gg3.age 20 cout gg3 gg3.age gg3....

c語言基礎 結構體

結構體也是一種資料型別 這種資料型別裡面可以定義不同的資料型別的資料,是一種使用者自定義的資料型別 當然結構體裡面可以巢狀陣列和結構體 結構體的定義 struct 結構體名 注意 結構體的命名用駝峰法 每乙個成員變數後面要加上 在最後的 後面要加上 結構體變數的定義 struct 結構體名 結構體變...

c語言基礎 結構體

在c語言中,可以使用結構體 struct 來存放一組不同型別的資料。結構體的定義形式為 struct 結構體名 變數名表列 結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可以不同,每個這樣的變數或陣列都稱為結構體的成員 member 請看下面的乙個例子 struct stu 像...