" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C語(yǔ)言結(jié)構(gòu)體的定義和使用

 更新時(shí)間:2021年12月28日 16:19:41   作者:女孩臉紅了  
這篇文章主要為大家介紹了C語(yǔ)言結(jié)構(gòu)體的定義和使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

1.1: 結(jié)構(gòu)體用來(lái)干嘛?

生活中我們會(huì)遇到很多的表格,就比如你的學(xué)習(xí)成績(jī)表,有姓名 ,學(xué)號(hào),各科的成績(jī),總的成績(jī)等等,這是一些不同的數(shù)據(jù)類型,我們要是在c語(yǔ)言中想同時(shí)使用這些不同的數(shù)據(jù)怎么辦呢? 可以使用結(jié)構(gòu)體變量,結(jié)構(gòu)體變量在c語(yǔ)言中是一種構(gòu)造類型的數(shù)據(jù),顧名思義,它跟基本的如int這種原子類型的變量不同.可以把他看作這些基本變量的集合.

1.2:結(jié)構(gòu)體變量的基本定義格式

struct 結(jié)構(gòu)體名
{
	<基本類型名>  <成員變量名>;
	<基本類型名>  <成員變量名>;
	<基本類型名>  <成員變量名>;
};

注意:struct 是關(guān)鍵字是結(jié)構(gòu)體類型的說(shuō)明標(biāo)識(shí)符,不能省略,結(jié)構(gòu)體名可以省略,我們?cè)谑褂?typedef struct 時(shí)就省略了就不寫(xiě)結(jié)構(gòu)體名

1.3:結(jié)構(gòu)體變量的定義

(我們也可以在創(chuàng)建結(jié)構(gòu)體的時(shí)候聲明變量這里不再贅述,提一下我對(duì)結(jié)構(gòu)體變量的理解:首先結(jié)構(gòu)體就是一個(gè)各種基本數(shù)據(jù)類型的集合,而就結(jié)構(gòu)體變量就像我們定義一個(gè)集合s={1,2,3,4},s就相當(dāng)于一個(gè)結(jié)構(gòu)體變量,結(jié)構(gòu)體變量包含結(jié)構(gòu)體中的各個(gè)成員變量,我們可以對(duì)成員變量進(jìn)行引用,操作....)

struct 結(jié)構(gòu)體名  a, b;     //定義了兩個(gè)結(jié)構(gòu)體變量
strcut 結(jié)構(gòu)體名 S[4];      //定義一個(gè)結(jié)構(gòu)體變量數(shù)組,有四個(gè)元素
strcut 結(jié)構(gòu)體名* p = &a;   //定義一個(gè)結(jié)構(gòu)體指針,指向結(jié)構(gòu)體變量a

1.4結(jié)構(gòu)體變量的三種引用方法

結(jié)構(gòu)體變量.成員名
(*結(jié)構(gòu)體指針).成員名
結(jié)構(gòu)體指針->成員名       //使用指針的時(shí)候推薦使用這一種,因?yàn)樵跀?shù)據(jù)結(jié)構(gòu)中,很多這種引用方式

2.結(jié)構(gòu)體變量的使用(直接使用結(jié)構(gòu)體變量)

#include <stdio.h>
/*結(jié)構(gòu)體的使用*/
int main()
{
	struct job_exam                   //定義一個(gè)job_exam的結(jié)構(gòu)體
	{
		unsigned num;                    //學(xué)號(hào)
		char  name[10];                  //姓名
		char  gread_class[10];           //班級(jí)
		int EngLish;                 //英語(yǔ)成績(jī)
		int Chinese;                 //語(yǔ)文成績(jī)
		int Match;                   //數(shù)學(xué)成績(jī)
		int Sum_Exam;                //總成績(jī)
	};
	struct  job_exam Most_Exam_Student;                                                                         //結(jié)構(gòu)體變量用來(lái)存放成績(jī)最高的同學(xué)的信息
	struct job_exam  SomeStudent_news[4] = { {1901,"隴軍","3-2班",100,100,78},{1902,"李華","3-2班",99,99,88},
		{1903,"李明","3-2班",99,98,90},{1903,"李光","3-2班",99,98,80}};                                         //結(jié)構(gòu)體數(shù)組用來(lái)輸入4名同學(xué)的信息
	for (int i = 0; i < 4; i++)          //依次計(jì)算每一位同學(xué)的總成績(jī)
	{
		SomeStudent_news[i].Sum_Exam = SomeStudent_news[i].EngLish + SomeStudent_news[i].Chinese + SomeStudent_news[i].Match;
	}
	Most_Exam_Student = SomeStudent_news[0];        //假使第一個(gè)學(xué)生的成績(jī)最高
	if (Most_Exam_Student.Sum_Exam < SomeStudent_news[1].Sum_Exam)
	{
		Most_Exam_Student = SomeStudent_news[1];
	}
	else if (Most_Exam_Student.Sum_Exam < SomeStudent_news[2].Sum_Exam)
	{
		Most_Exam_Student = SomeStudent_news[2];
	}
	else
	{
		Most_Exam_Student = SomeStudent_news[3];
	}
	printf("總成績(jī)最高學(xué)生的信息為:\n");
	printf("  編號(hào)    姓名   班級(jí)   英語(yǔ)    語(yǔ)文   數(shù)學(xué)  總成績(jī)\n");
	printf("%6u %7s %7s %6d %6d %6d %6d",Most_Exam_Student.num,Most_Exam_Student.name,Most_Exam_Student.gread_class,Most_Exam_Student.EngLish,Most_Exam_Student.Chinese,Most_Exam_Student.Match,Most_Exam_Student.Sum_Exam);
}

2.1輸出結(jié)果

當(dāng)用結(jié)構(gòu)體變量作為函數(shù)參數(shù)進(jìn)行整體傳送時(shí),要將全部成員逐個(gè)進(jìn)行傳送,當(dāng)成員中有數(shù)組時(shí),會(huì)使傳送的時(shí)間和空間開(kāi)銷都很大嚴(yán)重降低程序的效率,所以我們一般在使用時(shí)不直接傳送結(jié)構(gòu)體變量,而是傳送結(jié)構(gòu)體變量的地址,減少時(shí)間課空間的開(kāi)銷

3.使用結(jié)構(gòu)體指針操作,返回總成績(jī)最低的學(xué)生信息

#include <stdio.h>
/*結(jié)構(gòu)體的使用*/
int Find_Sumexam(struct job_exam* pa);        //函數(shù)聲明
struct job_exam                   //定義一個(gè)全局job_exam的結(jié)構(gòu)體
{
	unsigned num;                    //學(xué)號(hào)
	char  name[10];                  //姓名
	char  gread_class[10];           //班級(jí)
	int EngLish;                 //英語(yǔ)成績(jī)
	int Chinese;                 //語(yǔ)文成績(jī)
	int Match;                   //數(shù)學(xué)成績(jī)
	int Sum_Exam;                //總成績(jī)
};
struct job_exam  SomeStudent_news[4] = { {1901,"隴軍","3-2班",100,100,78},{1902,"李華","3-2班",99,99,88},   	//結(jié)構(gòu)體數(shù)組用來(lái)輸入4名同學(xué)的信息
	{1903,"李明","3-2班",99,98,90},{1903,"李光","3-2班",99,98,80} };
int main()
{
	struct  job_exam Most_Exam_Student;                                                                         //結(jié)構(gòu)體變量用來(lái)存放成績(jī)最高的同學(xué)的信息
	for (int i = 0; i < 4; i++)                                                                                 //依次計(jì)算每一位同學(xué)的總成績(jī)
	{
		SomeStudent_news[i].Sum_Exam = SomeStudent_news[i].EngLish + SomeStudent_news[i].Chinese + SomeStudent_news[i].Match;
	}
	Find_Sumexam(&Most_Exam_Student);                                                                          //函數(shù)調(diào)用
	printf("總成績(jī)最低學(xué)生的信息為:\n");
	printf("  編號(hào)    姓名   班級(jí)   英語(yǔ)    語(yǔ)文   數(shù)學(xué)  總成績(jī)\n");
	printf("%6u %7s %7s %6d %6d %6d %6d",Most_Exam_Student.num,Most_Exam_Student.name,Most_Exam_Student.gread_class,Most_Exam_Student.EngLish,Most_Exam_Student.Chinese,Most_Exam_Student.Match,Most_Exam_Student.Sum_Exam);
}
int Find_Sumexam(struct job_exam* pa)                                                                         //定義一個(gè)返回最高學(xué)生信息的函數(shù)
{
	*pa = SomeStudent_news[0];                                                                               //假使第一個(gè)學(xué)生的總成績(jī)最高
	for (int i = 1; i < 4; i++)
	{
		if (pa->Sum_Exam > SomeStudent_news[i].Sum_Exam)
		{
			*pa = SomeStudent_news[i];                                                                      //這樣的化只需要找到最高一個(gè)學(xué)生的地址返回他的信息就可以了
		}
	}
	return 0;
}

3.1運(yùn)行結(jié)果

總結(jié):

結(jié)構(gòu)體沒(méi)有什么神奇的就是,一個(gè)集合里面包含了各種數(shù)據(jù)類型,我們想用什么加個(gè).就可以拿出來(lái)用,本質(zhì)和基本的數(shù)據(jù)類型沒(méi)有什么區(qū)別,歡迎大家來(lái)評(píng)論區(qū)指出有問(wèn)題的地方

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • OpenCV 視頻中火焰檢測(cè)識(shí)別實(shí)踐

    OpenCV 視頻中火焰檢測(cè)識(shí)別實(shí)踐

    本文主要介紹了OpenCV 視頻中火焰檢測(cè)識(shí)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++?實(shí)現(xiàn)讀寫(xiě)鎖的代碼詳解

    C++?實(shí)現(xiàn)讀寫(xiě)鎖的代碼詳解

    C++讀寫(xiě)鎖是一種多線程同步機(jī)制,它允許多個(gè)線程同時(shí)讀取共享數(shù)據(jù),但只允許一個(gè)線程寫(xiě)入共享數(shù)據(jù),這種鎖可以提高程序的并發(fā)性和性能,本文給大家介紹了C++?實(shí)現(xiàn)讀寫(xiě)鎖的代碼,需要的朋友可以參考下
    2023-10-10
  • C++中explict關(guān)鍵字用法

    C++中explict關(guān)鍵字用法

    這篇文章主要介紹了C++中explict關(guān)鍵字用法的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • C++深入刨析類與對(duì)象的使用

    C++深入刨析類與對(duì)象的使用

    類和對(duì)象是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語(yǔ)言的合稱。對(duì)象是對(duì)客觀事物的抽象,類是對(duì)對(duì)象的抽象。類是一種抽象的數(shù)據(jù)類型;變量就是可以變化的量,存儲(chǔ)在內(nèi)存中—個(gè)可以擁有在某個(gè)范圍內(nèi)的可變存儲(chǔ)區(qū)域
    2022-05-05
  • VS2017中配置QT5.12.0的圖文教程

    VS2017中配置QT5.12.0的圖文教程

    本文主要介紹了VS2017中配置QT5.12.0的圖文教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C語(yǔ)言算法積累圖的遍歷鄰接表簡(jiǎn)單路徑

    C語(yǔ)言算法積累圖的遍歷鄰接表簡(jiǎn)單路徑

    這篇文章主要為大家介紹了C語(yǔ)言算法積累圖的遍歷鄰接表簡(jiǎn)單路徑實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • C++操作.json文件的超詳細(xì)新手教程

    C++操作.json文件的超詳細(xì)新手教程

    最近因?yàn)轫?xiàng)目原因需要解析JSON格式數(shù)據(jù),所以這篇文章主要給大家介紹了關(guān)于C++操作.json文件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • C語(yǔ)言實(shí)現(xiàn)最全自動(dòng)售貨機(jī)

    C語(yǔ)言實(shí)現(xiàn)最全自動(dòng)售貨機(jī)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)最全自動(dòng)售貨機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語(yǔ)言 位段的詳細(xì)介紹

    C語(yǔ)言 位段的詳細(xì)介紹

    這篇文章主要介紹了C語(yǔ)言 位段的詳細(xì)介紹的相關(guān)資料,學(xué)習(xí)C語(yǔ)言基礎(chǔ)的朋友,可以參考本文,需要的朋友可以參考下
    2016-11-11
  • C++實(shí)現(xiàn)并查集

    C++實(shí)現(xiàn)并查集

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)并查集,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評(píng)論

沭阳县| 东山县| 昌平区| 宁津县| 秀山| 莲花县| 昆明市| 天峨县| 准格尔旗| 日喀则市| 句容市| 日照市| 江川县| 梁河县| 大兴区| 鄂托克旗| 安平县| 布尔津县| 临城县| 黄龙县| 上高县| 水城县| 格尔木市| 弥勒县| 桐柏县| 兰溪市| 凤山市| 青冈县| 湛江市| 嵩明县| 安庆市| 织金县| 景洪市| 扎赉特旗| 交口县| 宣武区| 米易县| 景泰县| 扎鲁特旗| 繁昌县| 赤城县|