<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            C語言

            C語言結構體教程

            時間:2025-05-18 00:01:30 C語言 我要投稿
            • 相關推薦

            C語言結構體教程

              引導語;結構體是由一系列具有相同類型或不同類型的數據構成的數據集合。以下是百分網小編分享給大家的C語言結構體教程,歡迎閱讀!

              一、結構說明和結構變量定義

              在Turbo C中,結構也是一種數據類型,可以使用結構變量,因此,象其它類型的變量一樣, 在使用結構變量時要先對其定義。

              定義結構變量的一般格式為:

              struct 結構名

              {

              類型 變量名;

              類型 變量名;

              ...

              } 結構變量;

              結構名是結構的標識符不是變量名。

              類型為第二節中所講述的五種數據類型(整型、浮點型、字符型、指針型和無值型)。

              構成結構的每一個類型變量稱為結構成員,它象數組的元素一樣,但數組中元素是以下標來訪問的,而結構是按變量名字來訪問成員的。

              下面舉一個例子來說明怎樣定義結構變量。

              struct string

              {

              char name[8];

              int age;

              char sex[4];

              char depart[20];

              float wage1,wage2,wage3;

              }person;

              這個例子定義了一個結構名為string的結構變量person,如果省略變量名person,則變成對結構的說明。用已說明的結構名也可定義結構變量。這樣定義時上例變成:

              struct string

              {

              char name[8];

              int age;

              char sex[4];

              char depart[20];

              float wage1,wage2,wage3;

              };

              struct string person;

              如果需要定義多個具有相同形式的結構變量時用這種方法比較方便,它先作結構說明,再用結構名來定義變量。

              例如:

              struct string Tianyr, Liuqi, ...;

              如果省略結構名,則稱之為無名結構,這種情況常常出現在函數內部,用這種結構時前面的例子變成:

              struct

              {

              char name[8];

              int age;

              char sex[4];

              char depart[20];

              float wage1,wage2,wage3;

              } Tianyr, Liuqi;

              二、結構變量的使用

              結構是一個新的數據類型,因此結構變量也可以象其它類型的變量一樣賦值、運算,不同的是結構變量以成員作為基本變量。

              結構成員的表示方式為:

              結構變量.成員名

              如果將結構變量.成員名看成一個整體,則這個整體的數據類型與結構中該成員的數據類型相同,這樣就可象前面所講的變量那樣使用。

              下面這個例子定義了一個結構變量,其中每個成員都從鍵盤接收數據,然后對結構中的浮點數求和,并顯示運算結果。請注意這個例子中不同結構成員的訪問。

              #include

              main()

              {

              struct

              { /*定義一個結構變量*/

              char name[8];

              int age;

              char sex[4];

              char depart[20];

              float wage1,wage2,wage3;

              }a;

              float wage;

              char c='Y';

              while(c=='Y'||c=='y') /*判斷是否繼續循環*/

              {

              printf(\nName:);

              scanf(%s, a.name); /*輸入姓名*/

              printf(Age:);

              scanf(%d, &a.wage); /*輸入年齡*/

              printf(Sex:);

              scanf(%s, a.sex);

              printf(Dept:);

              scanf(%s, a.depart);

              printf(Wage1:);

              scanf(%f, &a.wage1); /*輸入工資*/

              printf(Wage2:);

              scanf(%f, &a.wage2);

              printf(Wage3:);

              scanf(%f, &a.wage3);

              wage=a.wage1+a.wage2+a.wage3;

              printf(The sum of wage is %6.2f\n, wage);

              printf(Continue?);

              c=getche();

              }

              }

              三、結構數組和結構指針

              結構是一種新的數據類型, 同樣可以有結構數組和結構指針。

              1.結構數組

              結構數組就是具有相同結構類型的變量集合。假如要定義一個班級40個同學的姓名、性別、年齡和住址, 可以定義成一個結構數組。如下所示:

              struct

              {

              char name[8];

              char sex[4];

              int age;

              char addr[40];

              }student[40];

              也可定義為:

              struct string

              {

              char name[8];

              char sex[4];

              int age;

              char addr[40];

              };

              struct string student[40];

              需要指出的是結構數組成員的訪問是以數組元素為結構變量的, 其形式為:

              結構數組元素.成員名

              例如:

              student[0].name

              student[30].age

              實際上結構數組相當于一個二維構造, 第一維是結構數組元素, 每個元素是一個結構變量, 第二維是結構成員。

              注意:

              結構數組的成員也可以是數組變量。

              例如:

              struct a

              {

              int m[3][5];

              float f;

              char s[20];

              }y[4];

              為了訪問結構a中結構變量y[2]的這個變量, 可寫成y[2].m[1][4]

              2.結構指針

              結構指針是指向結構的指針。它由一個加在結構變量名前的* 操作符來定義, 例如用前面已說明的結構定義一個結構指針如下:

              struct string

              {

              char name[8];

              char sex[4];

              int age;

              char addr[40];

              }*student;

              也可省略結構指針名只作結構說明, 然后再用下面的語句定義結構指針。

              struct string *student;

              使用結構指針對結構成員的訪問, 與結構變量對結構成員的訪問在表達方式上有所不同。結構指針對結構成員的訪問表示為:

              結構指針名->結構成員

              其中->是兩個符號-和>的組合,好象一個箭頭指向結構成員。例如要給上面定義的結構中name和age賦值,可以用下面語句:

              strcpy(student->name, Lu G.C);

              student->age=18;

              實際上, student->name就是(*student).name的縮寫形式。

              需要指出的是結構指針是指向結構的一個指針, 即結構中第一個成員的首地址, 因此在使用之前應該對結構指針初始化, 即分配整個結構長度的字節空間,這可用下面函數完成, 仍以上例來說明如下:

              student=(struct string*)malloc(size of (struct string));

              size of (struct string)自動求取string結構的字節長度,malloc()函數定義了一個大小為結構長度的內存區域, 然后將其詐地址作為結構指針返回。

              注意:

              1. 結構作為一種數據類型,因此定義的結構變量或結構指針變量同樣有局部變量和全程變量, 視定義的位置而定。

              2. 結構變量名不是指向該結構的地址,這與數組名的含義不同,因此若需要求結構中第一個成員的首地址應該是&[結構變量名]。

              3. 結構的復雜形式:嵌套結構

              嵌套結構是指在一個結構成員中可以包括其它一個結構,Turbo C允許這種嵌套。

              例如: 下面是一個有嵌套的結構

              struct string

              {

              char name[8];

              int age;

              struct addr address;

              } student;

              其中: addr為另一個結構的結構名, 必須要先進行, 說明, 即

              struct addr

              {

              char city[20];

              unsigned lon zipcode;

              char tel[14];

              }

              如果要給student結構中成員address結構中的zipcode賦值, 則可寫成:

              student.address.zipcode=200001;

              每個結構成員名從最外層直到最內層逐個被列出,即嵌套式結構成員的表達方式是:

              結構變量名.嵌套結構變量名.結構成員名

              其中: 嵌套結構可以有很多,結構成員名為最內層結構中不是結構的成員名。

            【C語言結構體教程】相關文章:

            C語言結構體定義06-25

            C語言結構體中的函數指針06-14

            c語言入門教程:語法結構04-09

            初步剖析C語言編程中的結構體02-18

            講解C語言編程中的結構體對齊01-17

            C語言的結構03-01

            C語言復習之結構體基礎知識07-16

            解析C語言結構體對齊(內存對齊問題)04-13

            C語言結構體(struct)常見使用方法03-06

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院