溫馨提示×

溫馨提示×

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

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

C語言結(jié)構(gòu)體如何使用

發(fā)布時間:2022-05-07 15:09:47 來源:億速云 閱讀:152 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“C語言結(jié)構(gòu)體如何使用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“C語言結(jié)構(gòu)體如何使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

    本質(zhì)

    一些值的集合。

    簡單使用

    #include <stdio.h>
    struct User {
    	char uName[20];
    	char uPass[20];
    };
    int main() {
    	struct User u1 = {
    		"abc","123"
    	};
    	printf("%s\n", u1.uName);
    	printf("%s\n", u1.uPass);
    	return 0;
    }

    效果:

    C語言結(jié)構(gòu)體如何使用

    一些寫法

    聲明之后,可以立即創(chuàng)建實(shí)例。

    也可以單獨(dú)聲明。

    #include <stdio.h>
    struct User {
    	char uName[20];
    	char uPass[20];
    } u1, u2, u3;
    struct User u4;
    int main() {
    	struct User u5;
    	return 0;
    }

    匿名結(jié)構(gòu)體:我用了,你們別想再用。

    struct {
    	char uName[20];
    	char uPass[20];
    }x;

    我套我自己

    只能套指針,因為空間有限。

    舉例:鏈表。

    #include <stdio.h>
    struct Node {
    	int val;
    	struct Node* next;
    };
    int main() {
    	struct Node a = { 333,NULL };
    	struct Node b = { 666,&a };
    	printf("%d\n", (*b.next).val);
    	return 0;
    }

    效果:

    C語言結(jié)構(gòu)體如何使用

    內(nèi)存對齊

    結(jié)構(gòu)體放成員,是一個一個放的。

    第一個放到首個地址處。

    第二個開始,計算一個對齊數(shù),該數(shù)是以下兩個值的較小者:

    1,VS的默認(rèn)值,8。

    2,該成員所占字節(jié)數(shù)。

    實(shí)際的偏移量是對齊數(shù)的整數(shù)倍。

    最后,結(jié)構(gòu)體的大小是最大對齊數(shù)的整數(shù)倍。

    舉例-int char char

    #include <stdio.h>
    struct A {
    	int a;
    	char b;
    	char c;
    };
    int main() {
    	struct A a = { 1,1,1 };
    	printf("%lld", sizeof(a));
    	return 0;
    }

    效果:8

    C語言結(jié)構(gòu)體如何使用

    圖解:

    int放在首位。

    char占1字節(jié),直接放。

    第二個char也是。

    最后長度,按int的字節(jié)數(shù)的整數(shù)倍,也就是8。

    C語言結(jié)構(gòu)體如何使用

    舉例-char int char

    #include <stdio.h>
    struct A {
    	char b;
    	int a;
    	char c;
    };
    int main() {
    	struct A a = { 1,1,1 };
    	printf("%lld", sizeof(a));
    	return 0;
    }

    效果:12

    C語言結(jié)構(gòu)體如何使用

    圖解:

    char直接放。

    int從第四個開始放。

    char直接放。

    最后長度:從9開始第一個4的倍數(shù),12。

    C語言結(jié)構(gòu)體如何使用

    舉例-char char int

    #include <stdio.h>
    struct A {
    	char b;
    	char c;
    	int a;
    };
    int main() {
    	struct A a = { 1,1,1 };
    	printf("%lld", sizeof(a));
    	return 0;
    }

    效果:8

    C語言結(jié)構(gòu)體如何使用

    圖解:兩個char直接放。

    int從下一個4的整數(shù)倍,也就是第五個開始放。

    最后長度:從8開始第一個4的倍數(shù),8。

    C語言結(jié)構(gòu)體如何使用

    由結(jié)構(gòu)體指針訪問成員

    就是一種箭頭的寫法。

    #include <stdio.h>
    struct A {
    	int a;
    };
    int main() {
    	struct A a = { 333 };
    	struct A* b = &a;
    	printf("%d\n", b->a);
    	return 0;
    }

    效果:

    C語言結(jié)構(gòu)體如何使用

    讀到這里,這篇“C語言結(jié)構(gòu)體如何使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI