C語言中的結(jié)構(gòu)體是一種用戶定義的數(shù)據(jù)類型,可以保存不同類型的數(shù)據(jù)元素。
結(jié)構(gòu)體的每個元素都稱為成員。
它像C++
中的模板和Java中的類一樣工作。可以有不同類型的元素。
例如,結(jié)構(gòu)體可廣泛用于存儲學生信息,員工信息,產(chǎn)品信息,圖書信息等。
struct
關(guān)鍵字用于定義結(jié)構(gòu)體。下面我們來看看在C語言中定義結(jié)構(gòu)體的語法。
struct structure_name
{
data_type member1;
data_type member2;
.
.
data_type memeberN;
};
下面來看看如何在C語言中定義員工結(jié)構(gòu)體的例子。
struct employee
{ int id;
char name[50];
float salary;
};
這里,struct
是關(guān)鍵字,employee
是結(jié)構(gòu)體的標簽名稱; id
,name
和salary
是結(jié)構(gòu)體的成員或者字段。讓我們通過下面給出的圖來理解它:
我們可以為結(jié)構(gòu)體聲明變量,以便訪問結(jié)構(gòu)體的成員。聲明結(jié)構(gòu)體變量有兩種方法:
main()
函數(shù)中的struct
關(guān)鍵字第一種方式:
下面來看看一下struct struct
來聲明結(jié)構(gòu)變量的例子。它應(yīng)該在主函數(shù)中聲明。
struct employee
{ int id;
char name[50];
float salary;
};
現(xiàn)在在main()
函數(shù)中寫入給定的代碼,如下 -
struct employee e1, e2;
第二種方式:
下面來看看在定義結(jié)構(gòu)體時聲明變量的另一種方法。
struct employee
{ int id;
char name[50];
float salary;
}e1,e2;
哪種方法好?
但如果變量個數(shù)不固定,使用第一種方法。它為您提供了多次聲明結(jié)構(gòu)體變量的靈活性。
如果變量變量個數(shù)是固定的,使用第二種方法。它在main()
函數(shù)代碼中保存聲明的變量。
訪問結(jié)構(gòu)成員有兩種方式:
.
(成員或點運算符)->
(結(jié)構(gòu)指針運算符)下面下面來看看看代碼訪問p1
變量的id
成員的.
操作符。
p1.id
我們來看看一個簡單的C語言結(jié)構(gòu)示例。創(chuàng)建一個工程:structure,并在此工程下創(chuàng)建一個源文件:structure-example.c,其代碼如下所示 -
#include <stdio.h>
#include <string.h>
struct employee
{
int id;
char name[50];
}e1; //declaring e1 variable for structure
int main()
{
//store first employee information
e1.id = 1010;
strcpy(e1.name, "Max Su");//copying string into char array
//printing first employee information
printf("employee 1 id : %d\n", e1.id);
printf("employee 1 name : %s\n", e1.name);
return 0;
}
執(zhí)行上面示例代碼,得到以下結(jié)果 -
employee 1 id : 1010
employee 1 name : Max Su
下面我們來看看如何使用C語言結(jié)構(gòu)體來存儲多個員工信息的示例。
創(chuàng)建一個源文件:structure-more-employee.c,其代碼如下所示 -
#include <stdio.h>
#include <string.h>
struct employee
{
int id;
char name[50];
float salary;
}e1, e2; //declaring e1 and e2 variables for structure
int main()
{
//store first employee information
e1.id = 1001;
strcpy(e1.name, "Max Su");//copying string into char array
e1.salary = 18000;
//store second employee information
e2.id = 1002;
strcpy(e2.name, "Julian Lee");
e2.salary = 15600;
//printing first employee information
printf("employee 1 id : %d\n", e1.id);
printf("employee 1 name : %s\n", e1.name);
printf("employee 1 salary : %f\n", e1.salary);
//printing second employee information
printf("employee 2 id : %d\n", e2.id);
printf("employee 2 name : %s\n", e2.name);
printf("employee 2 salary : %f\n", e2.salary);
return 0;
}
執(zhí)行上面示例代碼,得到以下結(jié)果 -
employee 1 id : 1001
employee 1 name : Max Su
employee 1 salary : 18000.000000
employee 2 id : 1002
employee 2 name : Julian Lee
employee 2 salary : 15600.000000