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