定義結(jié)構(gòu)體的同時聲明變量
#include
struct book
{
int id;
char name[20];
char type[20];
}book1; // 在這里直接聲明變量
int main()
{
scanf("%d %s %s",&book1.id,&book1.name,&book1.type);
printf("編號:%d 名稱:%s 類型:%s",book1.id,book1.name,book1.type);
return 0;
}
輸入:
1 西游記 四大名著
輸出結(jié)果:
編號:1 名稱:西游記 類型:四大名著
- 在定義結(jié)構(gòu)體的同時,我們在結(jié)構(gòu)體末尾的 } 處直接聲明所需變量,相比起在主函數(shù)內(nèi)再用struct book book1; 來聲明變量要方便快捷的多。
- 注意變量名后要以分號結(jié)尾。
使用typedef,讓結(jié)構(gòu)體的使用更方便
#include
typedef struct book
{
int id;
char name[20];
char type[20];
}book;
int main()
{
book book1;
scanf("%d %s %s",&book1.id,&book1.name,&book1.type);
printf("編號:%d 名稱:%s 類型:%s",book1.id,book1.name,book1.type);
return 0;
}
- 在不使用typedef的情況下,我們使用結(jié)構(gòu)體來聲明變量時需要加上struct,如:struct book book1。
- 并且在有些情況下結(jié)構(gòu)體的名字很長,當(dāng)我們需要聲明變量時,就會讓代碼看起來繁瑣。
- 這個時候,使用typedef為這個結(jié)構(gòu)體定義一個使用它時的名字,我們就可以像使用 int 之類的變量類型一樣,來使用結(jié)構(gòu)體了。
- 在本例中,我們將book結(jié)構(gòu)體還用book來進(jìn)行typedef定義。
- 這樣定義之后,我們就可以直接用“ book 變量名”來聲明變量了。
定義結(jié)構(gòu)體的位置:
- 定義結(jié)構(gòu)體的位置,也就是這段代碼要放在什么位置才合適。
方式1 :將定義結(jié)構(gòu)體的代碼放在主函數(shù)前
#include
typedef struct book
{
int id;
char name[20];
char type[20];
}book;
int main()
{
}
- 我們可以這樣理解,如果我們想要在主函數(shù)內(nèi)使用結(jié)構(gòu)體,那么我們在使用前一定要定義它,因為沒有定義便不存在,不存在便無法使用。
- 而程序的編譯是自上而下進(jìn)行的,因此定義結(jié)構(gòu)體代碼的位置要放在主函數(shù)前,否則就會報錯。
- 也就是說,在該結(jié)構(gòu)體定義下面的所有代碼與函數(shù)都可以使用該結(jié)構(gòu)體,不止是主函數(shù)。
方式2 :將定義結(jié)構(gòu)體的代碼放在主函數(shù)內(nèi)部
#include
int main()
{
typedef struct book
{
int id;
char name[20];
char type[20];
}book;
}
- 這個時候,該結(jié)構(gòu)體只有在主函數(shù)內(nèi),并且位于定義該結(jié)構(gòu)體代碼下方的的代碼才能使用。
- 而位于主函數(shù)外,或主函數(shù)內(nèi)但位于定義結(jié)構(gòu)體代碼上方的代碼是無法使用的。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4332瀏覽量
62666 -
代碼
+關(guān)注
關(guān)注
30文章
4790瀏覽量
68654 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28388 -
結(jié)構(gòu)體
+關(guān)注
關(guān)注
1文章
130瀏覽量
10848
發(fā)布評論請先 登錄
相關(guān)推薦
變量的聲明和定義有什么區(qū)別和聯(lián)系
變量的聲明和定義是編程中的兩個重要概念,它們在語法和語義上有一些區(qū)別和聯(lián)系。在本文中,我將詳細(xì)介紹變量的聲明和
在頭文件中加入外部結(jié)構(gòu)體變量聲明后報錯
最近在整文件系統(tǒng),但是在頭文件中加入外部結(jié)構(gòu)體變量聲明如extern FATFS *fs[2]就會提示結(jié)構(gòu)
發(fā)表于 10-11 08:55
【干貨】c語言基礎(chǔ)語法——結(jié)構(gòu)體
地方定義結(jié)構(gòu)體設(shè)計,而在其他地方定義實際的結(jié)構(gòu)體變量
發(fā)表于 06-03 17:10
自定義頭文件中的結(jié)構(gòu)體變量總是賦值無效的原因?
自定義了一個頭文件,里面包含一個結(jié)構(gòu)體,#ifndef Parameterdef#define Parameterdef#endif//Global parameters and variables
發(fā)表于 07-20 14:10
請問結(jié)構(gòu)體數(shù)組怎么聲明?
試試typedefstruct node{ int date; int next;}linklist;話說哪位老司機(jī)解釋下,結(jié)構(gòu)體數(shù)組怎么聲明
發(fā)表于 07-30 11:42
結(jié)構(gòu)體變量的定義與使用變量訪問結(jié)構(gòu)體成員
知識點回顧關(guān)于找最大公共子串的兩種解題方法結(jié)構(gòu)體的定義(3種)結(jié)構(gòu)體變量的
發(fā)表于 12-17 07:10
KIEL MDK關(guān)于頭文件聲明包含結(jié)構(gòu)體變量函數(shù)出現(xiàn)錯誤問題
? 今天遇到的一個問題:我在一個頭文件聲明了一個結(jié)構(gòu)體:然后再另一個函數(shù)寫了一個函數(shù)并在.h里面聲明:編譯出現(xiàn)了以下錯誤:大概的意思是說我這個結(jié)構(gòu)
發(fā)表于 04-18 11:36
求助,結(jié)構(gòu)體變量定義引用問題求解
|= mask;
}
如以上語句,GPIO_Type是個結(jié)構(gòu)體定義,定義了一個*base變量,在引用其中的成員時,是base->I
發(fā)表于 10-27 06:06
PIC結(jié)構(gòu)體及定義位元結(jié)構(gòu)
PIC結(jié)構(gòu)體及定義位元結(jié)構(gòu) extern volatile near unsigned char PORTB; // PORTB是一個字節(jié)(unsigned c
發(fā)表于 10-30 08:28
?2701次閱讀
變量定義和聲明的區(qū)別
我們在程序設(shè)計中,時時刻刻都用到變量的定義和變量的聲明,可有些時候我們對這個概念不是很清楚,知道它是怎么用,但卻不知是怎么一會事,下面我就簡單的把他們的區(qū)別介紹如下:
發(fā)表于 11-17 08:38
?1w次閱讀
結(jié)構(gòu)體的定義、初始化和賦值
type)的一類。結(jié)構(gòu)體可以被聲明為變量、指針或數(shù)組等,用以實現(xiàn)較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)
發(fā)表于 11-20 09:29
?5.4w次閱讀
C語言如何定義結(jié)構(gòu)體類型變量
在定義了結(jié)構(gòu)體變量后,系統(tǒng)會為之分配內(nèi)存單元。根據(jù)結(jié)構(gòu)體類型中包含的成員情況,在Visual C
結(jié)構(gòu)體成員變量的引用方法123
這里采用的是常用的typedef關(guān)鍵字進(jìn)行定義結(jié)構(gòu)體類型,可以看到student_t這種數(shù)據(jù)類型里面有4個成員變量,分別是學(xué)號、姓名、分?jǐn)?shù)、年齡,這些成員
評論