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

詳解C語言中結(jié)構(gòu)體的使用

 更新時間:2022年07月01日 14:14:40   作者:從未止步..  
結(jié)構(gòu)體是一些值的集合,這些值稱為成員變量,結(jié)構(gòu)體的每個成員可以是不同類型的變量。本文將通過示例為大家詳細(xì)講講C語言中結(jié)構(gòu)體的使用,需要的可以參考一下

結(jié)構(gòu)體的聲明

結(jié)構(gòu)體的定義:結(jié)構(gòu)體是一些值的集合,這些值稱為成員變量,結(jié)構(gòu)體的每個成員可以是不同類型的變量。

舉例:

//定義結(jié)構(gòu)體類型
struct tag//struct結(jié)構(gòu)體關(guān)鍵字 tag結(jié)構(gòu)體標(biāo)簽 struct tag結(jié)構(gòu)體類型
{
    //成員變量
    char name[20];
    short age;
    char telphone[12];
    char sex[5];
}s1,s2,s3;//s1,s2,s3是三個全局結(jié)構(gòu)體變量
int main()
{
    struct tag s;//s是局部變量
    return 0;
}

小tips:結(jié)構(gòu)體類型是不占內(nèi)存空間的,-相當(dāng)于int在C語言中也是不占內(nèi)存的,而int a(定義a變量后就會占據(jù)內(nèi)存)

使用typedef定義一個單獨的變量,因為我們在編寫代碼的過程中,重復(fù)的書寫struct會感覺很繁瑣,這樣定義之后就可以直接使用改變量作為結(jié)構(gòu)體類型。

舉例:

typedef struct tag//定義tag為結(jié)構(gòu)體別名,tag等價于struct tag
{
    char name[20];
    short age;
    char telphone[12];
    char sex[5];
}tag;//tag指的是類型,而不是變量
int main()
{
    struct tag s1;
    tag s2;//struct tag==tag,因此tag可以直接使用
    return 0;
}

結(jié)構(gòu)體成員的類型

結(jié)構(gòu)體成員的類型可以是標(biāo)量,數(shù)組,指針。其他結(jié)構(gòu)體。

結(jié)構(gòu)體變量的定義和初始化:

#include <stdio.h>
typedef struct tag
{
    //結(jié)構(gòu)體成員類型的定義
    char name[20];
    short age;
    char telphone[12];
    char sex[5];
}tag;
int main()
{
    tag s1={"張三",20,"15372842487"};//結(jié)構(gòu)體變量的初始化
    printf("%s的年齡是%d,手機(jī)號碼為%s\n", s1.name, s1.age, s1.telphone);//輸出有關(guān)該成員的信息,通過結(jié)構(gòu)體變量找對應(yīng)的成員變量
    struct tag s2={"lisa",19,"8725111"};
    printf("%s的年齡是%d,手機(jī)號碼為%s", s2.name, s2.age, s2.telphone);
    return 0;
}

結(jié)果

結(jié)構(gòu)體成員的訪問

結(jié)構(gòu)體變量訪問成員:結(jié)構(gòu)體變量的成員是通過點操作符(.)訪問的,點操作符接受兩個操作數(shù)。

例如:

struct stu
{
    char name[20];
    int age;
}s1={"張三",19};
int main()
{
    printf("%s的年齡是%d", s1.name, s1.age);//s1.name和s1.age就是 通過點操作符訪問結(jié)構(gòu)體成員
}

輸出:

張三的年齡是19

結(jié)構(gòu)體傳參數(shù)的時候,要傳結(jié)構(gòu)體的地址,其原因是函數(shù)傳參的時候,參數(shù)是需要壓棧的,如果傳遞一個結(jié)構(gòu)體對象的時候,結(jié)構(gòu)體過大,參數(shù)壓棧的系統(tǒng)開銷比較大,因此會導(dǎo)致性能下降。

舉例:

typedef struct stu
{
    char name[20];
    int age;
}stu;
void print1(stu tmp)//傳遞結(jié)構(gòu)體的值
{
    printf("name:%s\n", tmp.name);
    printf("age:%d\n", tmp.age);
}
void print2(stu* ps)//傳遞結(jié)構(gòu)體的地址,開辟的空間為一個指針的大?。?/8個字節(jié))
{
    printf("name:%s\n", ps->name);
    printf("age:%d\n", ps->age);
}
int main()
{
    stu s = { "張三",19 };
    print1(s);
    print2(&s);
    return 0;
}

輸出:

name:張三
age:19
name:張三
age:19

這里插播一點數(shù)據(jù)結(jié)構(gòu)的知識:數(shù)據(jù)結(jié)構(gòu)分為線性數(shù)據(jù)結(jié)構(gòu)(順序表,鏈表,棧,隊列)和樹形數(shù)據(jù)結(jié)構(gòu)(二叉樹,圖)。

順序表:按照一定的順序?qū)⒃貎Υ嫫饋怼?/p>

舉例:

鏈表:用一條線將元素連接起來,不要求元素都在同一條線上。

舉例:

棧:元素先進(jìn)后出,后進(jìn)先出,元素的出入方式類似于手電筒中的電池一樣,向一個不含任何元素的棧中放入一個元素的過程叫壓棧,刪除棧中的一個元素的過程,叫出棧,棧中元素的刪除也是由棧頂鄉(xiāng)下進(jìn)行刪除,因此如果想刪除棧中元素,不能直接刪除,必須將在該元素后面放入的元素都進(jìn)行刪除。

舉例:

實例分析:

int add(int x, int y)
{
    int z = 0;
    z = x + y;
    return z;
}
int main()
{
    int a = 10;
    int b = 20;
    int ret = 0;
    ret = add(a, b);
    printf("%d\n",ret);
    return 0;
}

輸出:

30

函數(shù)在調(diào)用的時候,實參的傳遞順序是從右到左,將a,b放入x,y的過程叫壓棧。

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

相關(guān)文章

  • C++實現(xiàn)智能柜管理系統(tǒng)

    C++實現(xiàn)智能柜管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)智能柜管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++和java設(shè)計模式之單例模式

    C++和java設(shè)計模式之單例模式

    這篇文章主要為大家詳細(xì)介紹了C++和java設(shè)計模式之單例模式的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • C語言中的八大排序算法詳解

    C語言中的八大排序算法詳解

    這篇文章主要介紹了C語言中的八大排序算法詳解,所謂排序,就是使一串記錄,按照其中的某個或某些關(guān)鍵字的大小,遞增或遞減的排列起來的操作,需要的朋友可以參考下
    2023-07-07
  • C++基于LINUX的文件操作

    C++基于LINUX的文件操作

    這篇文章主要為大家介紹了C++基于LINUX的文件操作示例知識擴(kuò)充,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • C語言實現(xiàn)三子棋游戲附注釋

    C語言實現(xiàn)三子棋游戲附注釋

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)三子棋游戲附注釋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++實現(xiàn)封裝的順序表的操作與實踐

    C++實現(xiàn)封裝的順序表的操作與實踐

    在程序設(shè)計中,順序表是一種常見的線性數(shù)據(jù)結(jié)構(gòu),通常用于存儲具有固定順序的元素,與鏈表不同,順序表中的元素是連續(xù)存儲的,因此訪問速度較快,但插入和刪除操作的效率可能較低,本文將詳細(xì)介紹如何用 C++ 語言實現(xiàn)一個封裝的順序表類,深入探討順序表的核心操作
    2025-02-02
  • C++實現(xiàn)LeetCode(55.跳躍游戲)

    C++實現(xiàn)LeetCode(55.跳躍游戲)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(55.跳躍游戲),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言實現(xiàn)簡單電子通訊錄

    C語言實現(xiàn)簡單電子通訊錄

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)簡單電子通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++或Go求矩陣?yán)锏膷u嶼的數(shù)量詳解

    C++或Go求矩陣?yán)锏膷u嶼的數(shù)量詳解

    這篇文章主要介紹了C++和go實現(xiàn)LeetCode(200.島嶼的數(shù)量),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 簡單談?wù)凜++ 中指針與引用

    簡單談?wù)凜++ 中指針與引用

    下面用通俗易懂的話來概述一下,指針-對于一個類型T,T*就是指向T的指針類型,也即一個T*類型的變量能夠保存一個T對象的地址,而類型T是可以加一些限定詞的,引用-引用是一個對象的別名,主要用于函數(shù)參數(shù)和返回值類型,符號X&表示X類型的引用。
    2015-09-09

最新評論

常山县| 喀喇沁旗| 静乐县| 丰原市| 铜鼓县| 昂仁县| 衡东县| 方山县| 阜南县| 中山市| 清新县| 太保市| 资中县| 阿克| 南陵县| 虹口区| 凭祥市| 巩义市| 肇源县| 军事| 黄龙县| 科技| 新密市| 山西省| 祁阳县| 宁阳县| 通道| 永新县| 白河县| 兰州市| 淅川县| 延安市| 阳朔县| 铜鼓县| 亚东县| 额济纳旗| 敦煌市| 堆龙德庆县| 开化县| 四会市| 乡宁县|