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

一文學(xué)會(huì)c語(yǔ)言結(jié)構(gòu)體的定義和使用方法

 更新時(shí)間:2022年11月23日 10:46:11   作者:撼滄  
數(shù)組是一種數(shù)據(jù)形式,其特點(diǎn)是多個(gè)相同類型的元素集合起來(lái),結(jié)構(gòu)體是另一種重要的數(shù)據(jù)形式,特點(diǎn)是將不同類型的成員組合起來(lái),下面這篇文章主要給大家介紹了關(guān)于c語(yǔ)言結(jié)構(gòu)體的定義和使用方法的相關(guān)資料,需要的朋友可以參考下

一、什么是結(jié)構(gòu)體

在實(shí)際問題中,一組數(shù)據(jù)往往具有不同的數(shù)據(jù)類型;例如在學(xué)生信息登記表中,姓名為字符型,學(xué)號(hào)為整型或字符型,年齡為整型,性別為字符型,成績(jī)?yōu)檎突驅(qū)嵭?。因?yàn)閿?shù)據(jù)類型不同,顯然不能用一個(gè)數(shù)組來(lái)存放。
在C語(yǔ)言中,可以使用結(jié)構(gòu)體(Struct)來(lái)存放一組不同類型的數(shù)據(jù)。結(jié)構(gòu)體(struct)指的是一種數(shù)據(jù)結(jié)構(gòu),是C語(yǔ)言中聚合數(shù)據(jù)類型(aggregate datatype)的一類。結(jié)構(gòu)體可以被聲明為變量、指針或數(shù)組等,用以實(shí)現(xiàn)較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體同時(shí)也是一些元素的集合,這些元素稱為結(jié)構(gòu)體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。

定義結(jié)構(gòu)體的一般形式為:

struct 結(jié)構(gòu)體名{  
    成員列表  
}; 

在成員表列中可以是幾種基本數(shù)據(jù)類型,也可以是結(jié)構(gòu)體類型。

struct 類型名{} 變量;后的分號(hào)不能漏

例如用結(jié)構(gòu)體來(lái)表示學(xué)生信息:

struct stu{  
    char *name;  //姓名  
    int num;  //學(xué)號(hào)  
    char sex;  //性別  
    float score;  //成績(jī)  
};

二、結(jié)構(gòu)體變量

結(jié)構(gòu)體也是一種數(shù)據(jù)類型,可以用來(lái)說(shuō)明變量。例如:

struct stu stu1, stu2; 

定義了兩個(gè)變量 stu1 和 stu2,它們都是 stu 類型,都由 4 個(gè)成員組成。注意關(guān)鍵字struct不能少。

結(jié)構(gòu)體的各個(gè)成員在內(nèi)存中是連續(xù)存儲(chǔ)的。stu1、stu2 的內(nèi)存如下圖所示:

圖片標(biāo)題

也可以在定義結(jié)構(gòu)體的同時(shí)定義結(jié)構(gòu)體變量:

struct stu{  
    char *name;  //姓名  
    int num;  //學(xué)號(hào)  
    char sex;  //性別  
    float score;  //成績(jī)  
} stu1, stu2;  

如果只需要 stu1、stu2 兩個(gè)變量,也可以不寫結(jié)構(gòu)體名字:

struct{  //沒有寫 stu  
    char *name;  //姓名  
    int num;  //學(xué)號(hào)  
    char sex;  //性別  
    float score;  //成績(jī)  
} stu1, stu2;  

這樣做書寫簡(jiǎn)單,但是因?yàn)闆]有結(jié)構(gòu)體名,后面就沒法用該結(jié)構(gòu)體定義新的變量。

也可以用宏定義使一個(gè)符號(hào)常量來(lái)表示一個(gè)結(jié)構(gòu)類型,例如:

#define STU struct stu  
STU{  
    char *name;  //姓名  
    int num;  //學(xué)號(hào)  
    char sex;  //性別  
    float score;  //成績(jī)  
};  
STU stu1, stu2;

后面我們會(huì)學(xué)習(xí)Windows編程,大部分結(jié)構(gòu)體都是這樣定義的。

typedef和#define用法不同,甚至可以結(jié)合起來(lái)靈活使用,使用時(shí)一定要注意兩者的不同之處。

三、成員的獲取和賦值

在C語(yǔ)言中,使用點(diǎn)號(hào).來(lái)獲取結(jié)構(gòu)體中的一個(gè)成員,一般格式為:

結(jié)構(gòu)變量名.成員名  

例如:

stu1.name;  //第一個(gè)學(xué)生的姓名  
stu2.score;  //第二個(gè)學(xué)生的成績(jī)  

獲取成員后,就可以對(duì)該成員進(jìn)行賦值了,例如:

stu1.name = “Tom”;
stu2.score = 90.5;

除了可以對(duì)成員進(jìn)行逐一賦值,也可以像數(shù)組一樣整體賦值,例如:

struct stu{  
    char *name;  //姓名  
    int num;  //學(xué)號(hào)  
    char sex;  //性別  
    float score;  //成績(jī)  
} stu1, stu2 = { "Tom", 10, 'M', 90 };  

不過(guò)整體賦值僅限于上面這樣的情況,也就是定義結(jié)構(gòu)體的同時(shí)聲明變量。下面的寫法是錯(cuò)誤的:

stu2 = { "Tom", 10, 'M', 90 };  

一個(gè)完整的示例:

#include <stdio.h>  
#define STU struct stu  
int main(){  
    STU{  
        char *name;  //姓名  
        int num;  //學(xué)號(hào)  
        char sex;  //性別  
        float score;  //成績(jī)  
    };  
    STU stu1;  
    stu1.name = "James Bond";  
    stu1.num = 1;  
    stu1.sex = 'M';  //用M表示男性,W表示女性  
    stu1.score = 99;  
    printf("Hello everyone! My name is %s, a naughty boy, but with good scores(%.2f) and top No.(%d)!", stu1.name, stu1.score, stu1.num);  
    return 0;  
}  

附:結(jié)構(gòu)體數(shù)組

指向結(jié)構(gòu)體對(duì)象的指針變量既可以指向結(jié)構(gòu)體變量,也可以指向結(jié)構(gòu)體數(shù)組中的元素。

struct Student
{
    int num;
    char name[20];
    char sex;
} s1[3];
struct Student *p;

指針可以指向數(shù)組,代碼如下:p = s1; p = &s1[0]; 指針移動(dòng)p++ 移動(dòng)一個(gè)結(jié)構(gòu)體字節(jié)大??;

指針訪問成員方式:(*p).num   p->num。

總結(jié)

到此這篇關(guān)于c語(yǔ)言結(jié)構(gòu)體的定義和使用的文章就介紹到這了,更多相關(guān)c語(yǔ)言結(jié)構(gòu)體定義和使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)掃雷小游戲的全過(guò)程記錄

    C語(yǔ)言實(shí)現(xiàn)掃雷小游戲的全過(guò)程記錄

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言實(shí)現(xiàn)掃雷小游戲的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C語(yǔ)言每日練習(xí)之字符串反轉(zhuǎn)

    C語(yǔ)言每日練習(xí)之字符串反轉(zhuǎn)

    這篇文章主要介紹了C語(yǔ)言字符串反轉(zhuǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • 使用ShellClass獲取文件屬性詳細(xì)信息的實(shí)現(xiàn)方法

    使用ShellClass獲取文件屬性詳細(xì)信息的實(shí)現(xiàn)方法

    本篇文章是對(duì)ShellClass獲取文件屬性詳細(xì)信息的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實(shí)現(xiàn)連連看游戲核心代碼

    C++實(shí)現(xiàn)連連看游戲核心代碼

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)連連看游戲核心代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 詳解如何使用VSCode和CMake構(gòu)建跨平臺(tái)的C/C++開發(fā)環(huán)境

    詳解如何使用VSCode和CMake構(gòu)建跨平臺(tái)的C/C++開發(fā)環(huán)境

    本文主要介紹了如何使用VSCode和CMake構(gòu)建跨平臺(tái)的C/C++開發(fā)環(huán)境,想進(jìn)行跨平臺(tái)開發(fā)的同學(xué)們,一定要看一下
    2021-06-06
  • linux C++ 獲取文件絕對(duì)路徑的實(shí)例代碼

    linux C++ 獲取文件絕對(duì)路徑的實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇linux C++ 獲取文件絕對(duì)路徑的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • C語(yǔ)言冷門知識(shí)之你可能沒聽過(guò)的柔性數(shù)組

    C語(yǔ)言冷門知識(shí)之你可能沒聽過(guò)的柔性數(shù)組

    柔性數(shù)組(Flexible Array)是引入的一個(gè)新特性,它允許你在定義結(jié)構(gòu)體時(shí)創(chuàng)建一個(gè)空數(shù)組,而這個(gè)數(shù)組的大小可以在程序運(yùn)行的過(guò)程中根據(jù)你的需求進(jìn)行更改特別注意的一點(diǎn)是:這個(gè)空數(shù)組必須聲明為結(jié)構(gòu)體的最后一個(gè)成員,并且還要求這樣的結(jié)構(gòu)體至少包含一個(gè)其他類型的成員
    2021-10-10
  • C++學(xué)習(xí)筆記之初始化列表

    C++學(xué)習(xí)筆記之初始化列表

    初始化列表是類中構(gòu)造函數(shù)的一部分,用于實(shí)例化類中變量時(shí)賦初值,下面這篇文章主要給大家介紹了關(guān)于C++學(xué)習(xí)筆記之初始化列表的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Qt圖片繪圖類之QPixmap/QImage/QPicture詳解

    Qt圖片繪圖類之QPixmap/QImage/QPicture詳解

    這篇文章主要為大家詳細(xì)介紹了Qt圖片繪圖類中QPixmap、QImage和QPicture的使用方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • exit和atexit的區(qū)別詳細(xì)解析

    exit和atexit的區(qū)別詳細(xì)解析

    以下是對(duì)exit與atexit的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09

最新評(píng)論

尖扎县| 定日县| 哈密市| 台东县| 普定县| 石景山区| 和林格尔县| 永仁县| 连江县| 衢州市| 玛曲县| 文安县| 嘉祥县| 陆川县| 隆回县| 株洲市| 南乐县| 贵溪市| 溧阳市| 临猗县| 乌苏市| 田阳县| 巫山县| 临湘市| 根河市| 仁怀市| 通河县| 合作市| 青川县| 阳朔县| 沙河市| 沿河| 慈利县| 呼玛县| 凌海市| 浦县| 清流县| 凯里市| 团风县| 民勤县| 和林格尔县|