結構體型別
結構體型別的一般形式如下:
struct結構體表示名
std, per[4], *pstd;
3.再說明乙個無名結構體的同時,直接進行定義。如
struct
charname[12];
char***;
structdate birthday;
floatscore[4];
}std, per[4], *pstd;
4.使用typedef說明乙個結構體型別名,再用新型別名來定義變數。如
typedef struct
charname[12];
char***;
structdate birthday;
floatscore[4];
}student;
student std, per[4],*pstd;
對結構體變數的初始化及引用
1,對結構體變數進行初始化
所賦初值順序放在乙個花括號中,如
struct student
charname[12];
char***;
structdate birthday;
floatscore[4];
}std = ;
2.對結構體變數的引用
(1).因為結構體變數是乙個整體,要訪問它其中的乙個成員,必須找到該結構體變數,然後再從中找出它其中乙個成員。
如下:結構體變數名.成員名
(2).如果結構體型別中有巢狀乙個結構體型別,則訪問乙個成員時,應採用逐級訪問的方法,直接得到所需訪問的成員為止。
例:std.birthday.year
(3).可以對結構體變數的成員進行各種有關的運算。
如:std.score[0]=std.score[1]+std.score[2];
std.birthday.day++;
(4).可以將乙個結構體變數作為乙個整體賦給另乙個具有相同型別的結構體變數。
如:struct student
charname[12];
char***;
structdate birthday;
floatscore[4];
}std = ;
struct studentstden;
stden = std;
結構體變數作為函式引數
1.想函式傳遞結構體變數的成員
2.想函式傳遞結構體變數
3.傳遞結構體的位址
4.函式的返回值是結構體型別
例:通過函式返回結構體型別的值
#include"stdio.h"
typedef struct
inta;
charb;
}st;
st fun(st x)
x.a= 99;
x.b= 's';
returnx;
int main()
sty;
y.a= 0;
y.b= 'a';
printf("y.a=%d,y.b=%c\n",y.a, y.b);
y= fun(y);
printf("y.a=%d,y.b=%c\n",y.a, y.b);
return0;
輸出結果如下:
y.a=0,y.b=a
y.a=99,y.b=s
5.函式的返回值可以是指向結構體變數的指標
例:通過函式的返回值返回指向結構體變數的指標
#include"stdio.h"
typedef struct
inta;
charb;
}st;
st * fun(st *x)
st* px;
(*x).a= 100;
(*x).b= 'c';
px= x;
returnpx;
int main()
sty,*p;
y.a= 0;
y.b= 'a';
printf("y.a=%d,y.b=%c\n",y.a, y.b);
p= fun(&y);
printf("y.a=%d,y.b=%c\n",(*p).a, (*p).b);
return0;
輸出結果如下:
y.a=0,y.b=a
y.a=100,y.b=c
C語言結構體
1.1.1 結構概念 1 結構存在的意義 存在是合理的,許多事物的存在是在不斷解決問題引入的,當然有更好的方法出現時改變也是合理的。在實際問題中,一組資料往往具有不同的資料型別。例如,在學生登記表中,姓名應為字元型,學號可為整型或字元型,年齡應為整型,性別應為字元型,成績可為整型或實型。顯然不能用乙...
C語言 結構體
宣告乙個結構體型別 struct 結構體名 成員表列 定義結構體變數的方法 1 先宣告結構體型別再定義變數名。在定義了結構體變數後,系統會為之分配記憶體單元.例如 struct student student1,student2 2 在宣告型別的同時定義變數,例如 struct 結構體名 成員表列 ...
c語言 結構體
1 定義結構體 c語言允許使用者自己建立不同型別資料組成的組合型的資料結構 struct 結構體名 1 結構體的型別不是只有一種,可以根據需要設計許多種,如struct student struct worker等 2 結構體的成員可以是另一結構體的成員,注意的是引用此成員的方式 2 定義結構體變數...