結構和聯合

2021-09-10 19:58:14 字數 3782 閱讀 7564

char *ptr;

ptr="hello";//可行

char str[32];

str="hello";//不可行

#include#include#include//宣告結構體

struct student//student結構體名

,否則是定義,不是宣告

int age;

char ***;

};int main()

;//初始化結構體變數

strcpy(s1.name,"bbbb");

s1.age=22;

s1.***='m';

//列印結構體變數,逐個列印

printf("%s %d %c\n",s1.name,s1.age,s1.***);//通過結構體變數訪問結構體成員

printf("%s %d %c\n",s2.name,s2.age,s2.***);

struct student *s3;//結構體指標

s3=(struct student *)malloc(sizeof(struct student));

printf("%d\n",sizeof(struct student));

strcpy(s3->name,"cccc");

s3->age=24;

s3->***='m';

printf("%s %d %c\n",s3->name,s3->age,s3->***);

scanf("%s",s1.name);

scanf("%s",s3->name);//name是陣列名,本身就是位址,不需要取位址

scanf("%d",&s3->age);

free(s3);

return 0;

}

編譯執行

[root@localhost 213]# gcc 1-結構體.c -o 1-結構體

[root@localhost 213]# ./1-結構體

偏移量計算

例:int a;

char b;

short c;

char d;

int e;

#include//1.結構體總長度一定是最長成員的整數倍

//2.每個成員的偏移量一定是該成員長度的整數倍,double偏移量是4的整數倍

struct test

;typedef struct test t;

struct test2

;int main()

執行

[root@localhost 213]# gcc 2-結構體長度.c -o 2-結構體長度

[root@localhost 213]# ./2-結構體長度

0xbfcfd500

816

#include#includestruct student

;typedef struct student stu;

int main()

for(i=0;i<3;i++)

stu *s1[10];//結構體指標陣列

for(i=0;i<3;i++)

}

執行

[root@localhost 213]# gcc 3-結構體陣列.c -o 3-結構體陣列

[root@localhost 213]# ./3-結構體陣列

aaa 1

bbb 2

ccc 3

aaa1

bbb2

ccc3

ddd 4

ddd4

#include#include#includestruct info

;typedef struct info info;

#define size 100

int person=0;//表示已經新增的人數

void welcome()

void menu()

void addinfo(info *i)//新增資訊

; char tel[32]=;

int age=0;

printf("請輸入姓名、**、年齡:\n");

scanf("%s%s%d",name,tel,&age);

strcpy(i[person].name,name);

strcpy(i[person].tel,tel);

i[person].age=age;

person++;

}void modifyinfo(info *i)//修改資訊

; char tel[32]=;

int age=0;

printf("請輸入姓名、**、年齡:\n");

scanf("%s%s%d",name,tel,&age);

strcpy(i[num-1].name,name);

strcpy(i[num-1].tel,tel);

i[num-1].age=age;

}void searchinfo(info *i)//查詢資訊

void deleteinfo(info *i)//刪除資訊

person--;

}void showinfo(info *i)//顯示資訊

;int main()

執行

[root@localhost 213]# ./5-聯合體概念 

}

執行

[root@localhost 213]# ./6-判斷大小端 

小端位元組序

執行

[root@localhost 213]# ./7-大小端轉換 

16777216

#include/*

#define sun 0

#define mon 1

#define tue 2

#define wen 3

*/enum

;int main()

執行

[root@localhost 213]# ./8-列舉 01

23

結構和聯合

聯合也是一種新的資料型別,它是一種特殊形式的變數。聯合說明和聯合變數定義與結構十分相似。其形式為 union 聯合名 聯合變數名 聯合表示幾個變數公用乙個記憶體位置,在不同的時間儲存不同的資料型別和不同長度的變數。下例表示說明乙個聯合a bc union a bc 再用已說明的聯合可定義聯合變數。例...

結構,聯合和列舉

結構 結構的宣告格式如下 struct id 別忘了右花括號後面的分號 1.和陣列類似的是,結構變數可在定義時初始化,如 struct id tae 同樣的,這種初始化只能在定義時進行。若在定義之後的地方進行,編譯器會報錯 但可用匿名結構進行快速賦值,如 struct id tae tae 錯誤 t...

C 結構和聯合

結構與聯合體是c語言中就已經存在的資料型別。c 語言對它們進行了擴充套件,最大的變化是允許在結構和聯體中定義成員函式。1 include2 using namespace std 3struct room 7struct student 14 15int main 17 student s 18,8...