中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中的結構體如何使用

發布時間:2022-09-23 11:24:03 來源:億速云 閱讀:155 作者:iii 欄目:開發技術

本篇內容介紹了“C語言中的結構體如何使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

結構體的聲明

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

舉例:

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

小tips:結構體類型是不占內存空間的,-相當于int在C語言中也是不占內存的,而int a(定義a變量后就會占據內存)

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

舉例:

typedef struct tag//定義tag為結構體別名,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;
}

結構體成員的類型

結構體成員的類型可以是標量,數組,指針。其他結構體。

結構體變量的定義和初始化:

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

結果

C語言中的結構體如何使用

結構體成員的訪問

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

例如:

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

輸出:

張三的年齡是19

結構體傳參數的時候,要傳結構體的地址,其原因是函數傳參的時候,參數是需要壓棧的,如果傳遞一個結構體對象的時候,結構體過大,參數壓棧的系統開銷比較大,因此會導致性能下降。

舉例:

typedef struct stu
{
    char name[20];
    int age;
}stu;
void print1(stu tmp)//傳遞結構體的值
{
    printf("name:%s\n", tmp.name);
    printf("age:%d\n", tmp.age);
}
void print2(stu* ps)//傳遞結構體的地址,開辟的空間為一個指針的大小(4/8個字節)
{
    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

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

順序表:按照一定的順序將元素儲存起來。

舉例:

C語言中的結構體如何使用

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

舉例:

C語言中的結構體如何使用

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

舉例:

C語言中的結構體如何使用

實例分析:

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

C語言中的結構體如何使用

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

“C語言中的結構體如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富川| 土默特左旗| 湛江市| 吕梁市| 石首市| 电白县| 绍兴县| 二连浩特市| 河曲县| 张掖市| 吉安县| 喀什市| 东平县| 玛多县| 博兴县| 夏河县| 景德镇市| 罗平县| 南和县| 昭平县| 玉树县| 通渭县| 甘泉县| 临漳县| 景宁| 石河子市| 铜川市| 汉中市| 桃江县| 宝应县| 五寨县| 天峻县| 潮州市| 靖江市| 西城区| 苍山县| 玉田县| 乐安县| 湄潭县| 武夷山市| 梓潼县|