結構體使用

2021-07-25 17:36:59 字數 2903 閱讀 9126

結構的定義

定義乙個結構的一般形式為:

struct 結構名

成員表由若干個成員組成,每個成員都是該結構的乙個組成部分。

對每個成員也必須作型別說明。

例如:

struct stu

int num;

char name[20];

int age;

結構型別變數的說明

結構體定義並不是定義乙個變數,而是定義了一種資料型別,這種型別是你定義的,它可以和語言本身所自有的簡單資料型別一樣使用(如 int )。

結構體本身並不會被作為資料而開闢記憶體,真正作為資料而在記憶體中儲存的是這種結構體所定義的變數

乙個結構體變數占多大記憶體空間呢?這是由這種結構體型別的定義決定的,可以想象為了同時儲存結構體的每乙個成員,那麼結構體變數的儲存大小,就應該是所有分量的儲存空間的總合。

說明結構變數有以下三種方法。以上面定義的stu為例來加以說明。

先定義結構,再說明結構變數。 如:

struct stu

int num;

char name[20];

int age;

struct stu boy1,boy2;

說明了兩個變數boy1和boy2為stu結構型別。

也可以用巨集定義使乙個符號常量來表示乙個結構型別, 例如:

#define stu struct stu

stu

int num;

char name[20];

int age;

stu boy1,boy2;  

在定義結構型別的同時說明結構變數。例如:

struct stu

int num;

char name[20];

int age;

}boy1,boy2;  

直接說明結構變數。

例如:

struct

int num;

char name[20];

int age;

}boy1,boy2;  

第三種方法與第二種方法的區別在於第三種方法中省去了結構名,而直接給出結構變數。

說明了boy1,boy2變數為stu型別後,即可向這兩個變數中的各個成員賦值。

在上述stu結構定義中,所有的成員都是基本資料型別或陣列型別。成員也可以又是乙個結構, 即構成了巢狀的結構。

例如:

struct dateboy1,boy2;

使用結構變數成員的一般形式是:

結構變數名.成員名

例如:

boy1.num

/*即第乙個人的學號 */

如果成員本身又是乙個結構則必須逐級找到最低階的成員才能使用。

例如:boy1.birthday.month

即第乙個人出生的月份成員可以在程式中單獨使用,與普通變數完全相同。  

結構變數的賦值

你可對結構體變數的成員逐個賦值,這種方式和陣列相像,陣列就是逐個元素逐一賦值(對於陣列,除非初始化,否則你別無選擇,只能這樣賦值)。不同於陣列,標準

c中結構體變數可以整體賦值

例一:#include

int main(void)

struct student

st1=;

struct student  st2,st3; 

printf("    no.    age    name   /n");

printf("   %ld    %d   %s/n",st1.num,st1.age,st1.name);

getch();

st2.num=199;

st2.age=19;

st2.name="lisi";

printf("   %ld    %d   %s/n",st2.num,st2.age,st2.name);

getch();

st3=st2;

printf("   %ld    %d   %s/n",st3.num,st3.age,st3.name);

getch();

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

getch();

return 0;

例二:

#include

#include

struct birth ;

struct student

st1=,"zhangsan"};

int main(void)

struct student  st2;

st2=st1;

printf("   %ld     %s  %d/n",st2.num,st2.name,sizeof(int));

printf("   year: %d   month: %d   month: %d/n",

st2.birthday.year,

st2.birthday.month,

st2.birthday.day);

getch();

return 0;

注意

當你的結構體變數中有存放多個字元的成員,建議你將它定義為陣列(比如前面的姓名成員,不知道陣列該開闢多大時,也可以定義為指標)。原因是指標變數不能存放實際資料,僅僅是位址。

PEB TEB結構體使用

乙個可執行檔案被os載入到記憶體,並處理完成相關的模組載入,匯入表處理 及其他必須處理後,形成乙個程序。在os核心中儲存有乙份關於這個程序的身份證資訊,就是平常看到的handle,叫程序控制代碼。os完成載入後,fs段暫存器指向當前的teb結構,具體teb結構如下 kd dt teb nt teb ...

結構體的使用

題目現有4 個學生,每個學生包含學號 三門課成績和平均成績等 4個資訊。首先輸入各位學生的學號 三門課成績 然後計算出每個學生的平均成績 最後輸入乙個學號,當該學號存在時,輸出對應學生的所有資訊,否則,輸出 該學號學生不存在!程式運 況 第一步,輸出兩行提示資訊 請依次輸入 4位學生資訊 學號 成績...

結構體的使用

c語言中新的資料型別 整型 123 浮點型別 小數 字元型別 字元 asfg 陣列也是一種型別 結構體 型別 整數類 int 1,2,3,4.人類 結構體 struct person 人類 需要名字 動物類 結構體 struct anim 動物類 汽車類 結構體 struct car 汽車類 電腦類...