欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C語言—結(jié)構(gòu)體總結(jié)-創(chuàng)新互聯(lián)

結(jié)構(gòu)體 1 結(jié)構(gòu)體類型的設(shè)計

在C語言中,結(jié)構(gòu)體是一種數(shù)據(jù)類型(由程序開發(fā)者自己設(shè)計的類型)??梢允褂媒Y(jié)構(gòu)體來存放一組不同類型的數(shù)據(jù)。結(jié)構(gòu)體的定義形式為:

懷仁ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
  struct 結(jié)構(gòu)體名{ 成員列表;(基本數(shù)據(jù)類型;指針;數(shù)組或其他結(jié)構(gòu)類型)
      };
2 結(jié)構(gòu)體變量的初始化

結(jié)構(gòu)體是一種數(shù)據(jù)類型,是創(chuàng)建變量的模板,不占用內(nèi)存空間;結(jié)構(gòu)體變量才包含了實實在在的數(shù)據(jù),需要內(nèi)存空間。

結(jié)構(gòu)體變量初始化
#includetypedef struct Student {//typedef 類型的重名名,將結(jié)構(gòu)體Student重命名為stu
	int id;
	const char* name; //節(jié)省內(nèi)存
	char sex[4];
	int age;
}stu;

int main() {stu st1 = {10010,"張三","男",19 };
	printf("%s\n", st1.name);  //張三
}
結(jié)構(gòu)體嵌套結(jié)構(gòu)體
#includestruct Date {int year;
	int month;
	int day;
};

struct Student {int id;
	const char* name; //節(jié)省內(nèi)存
	char sex[4];
	int age;
	Date birth;
};

int main() {Student stu1 = {10010,"麗麗","女",19,2000,10,1 };
	Student stu2 = {10011,"思思","女",18,{1999,12,1} };
	Date date;
	return 0;

}
3 結(jié)構(gòu)體成員訪問
#define  _CRT_SECURE_NO_WARNINGS
#include#includetypedef struct Student {int id;
	char name[10]; //節(jié)省內(nèi)存
	char sex[4];
	int age;
}stu;

int main() {stu st1 = {10010,"張三","男",19 };

	stu* st2 = &st1; //定義一個結(jié)構(gòu)體指針變量st2.

	//strcpy((*st2).name, "lisi");//方式1:(*結(jié)構(gòu)體類型指針).成員名
	//strcpy(st2->name, "lisi");//方式2:結(jié)構(gòu)體類型指針->成員名
	strcpy(st1.name, "lisi");//方式3:結(jié)構(gòu)體變量.成員名
	
	//printf("%s\n", (*st2).name);//方式1  lisi
	//printf("%s\n", st2->name);//方式2  lisi
	printf("%s\n", st1.name); //方式3  lisi
}
4 結(jié)構(gòu)體大小 如何計算結(jié)構(gòu)體的大?。?ol>
  • 結(jié)構(gòu)體變量的首地址,必須是MIN { 結(jié)構(gòu)體大基本數(shù)據(jù)類型成員所占字節(jié)數(shù),指定對其方式 } 的整數(shù)倍。
  • 結(jié)構(gòu)體每個成員對于結(jié)構(gòu)體首地址的偏移量,必須是MIN { 基本數(shù)據(jù)類型成員,指定對齊方式 } 的整數(shù)倍。
  • 結(jié)構(gòu)體的總大小,必須是 { 大基本數(shù)據(jù)類型成員所占字節(jié)數(shù)(將嵌套結(jié)構(gòu)體里的基本類型也算上,得出大基本數(shù)據(jù)類型成員所占字節(jié)數(shù)),指定對齊方式 } 的整數(shù)倍。
  • 4-1 未指定對齊值

    示例一

    #includeint main() {struct A {int a;//4
    		char b;//2 (前面4是2的倍數(shù),不需要再加)  +2
    		double c;//8 (前面的4+2=6不是8的倍數(shù),需要再加上2)
    		short d;//2 (前面4+2+2+8=16是2的倍數(shù))   +2
    		int e;//4 (前面16+2=18不是4的倍數(shù),需要再加上2)
    	};
    
    	printf("%d\n", sizeof(A));//4+2+2+8+2+2+4=24
    		
    }

    注意:VS默認對齊數(shù)為8。24恰好=MIN { 8(大基本數(shù)據(jù)類型成員所占字節(jié)數(shù)),8(對齊方式)} 的整數(shù)倍。

    示例二

    #includeint main() {struct A {int a;//4
    		char b;//1 (4是1的倍數(shù),不需要再加)
    	};
    	//4+1=5
    	//最接近5
    	//并且是MIN { 4(大基本數(shù)據(jù)類型成員所占字節(jié)數(shù)),8(對齊方式)} 的整數(shù)倍的數(shù)為8。
    
    	struct B {char c;//1   +1
    		short d;//2  (前面1不是2的倍數(shù),所以再加1)
    		A a;//8  (A不是基本數(shù)據(jù)類型,不需要和前面比較)
    		int f;//4  (前面的1+1+2+8=12是4的倍數(shù))
    	};
    	//1+1+2+8+4=16
    	//16是MIN { 4,8 } 的整數(shù)倍
    	//注意:大基本數(shù)據(jù)類型成員所占字節(jié)數(shù)(將嵌套結(jié)構(gòu)體里的基本類型也算上)為4
    	
    
    	printf("%d\n", sizeof(A));//8
    	printf("%d\n", sizeof(B));//16
    	
    }

    注意:在嵌套結(jié)構(gòu)體中,大基本數(shù)據(jù)類型成員所占字節(jié)數(shù),要將嵌套結(jié)構(gòu)體里的基本類型也算上.

    示例三

    #includeint main() {struct A {char name[10];//10  +2
    		int a;//4 
    		char* sex;//X64:8字節(jié)   X86:4字節(jié)   
    	};
    	//10+2+4+8=24  10+2+4+4=20 
    	//24恰是MIN { 8,8 }的整數(shù)倍
    	//20恰是MIN { 4, 8 }的整數(shù)倍
    
    		printf("%d\n", sizeof(A));//24或者20
    		
    }

    這里的結(jié)果可能是20或24。是因為char* sex;指針的大小和平臺有關(guān)系,在X64系統(tǒng)中為8字節(jié),在X86系統(tǒng)中為4字節(jié)。

    4-2 指定對齊值

    預處理指令#pragma pack(n)可以改變默認對齊數(shù)。n取值可以是1,2,4,8,16,……
    示例一

    #include#pragma pack(4)
    struct A {double a;//8
    	int b;//4 
    };
    #pragma pack()
    //8+4=12 是MIN { 8,4 }的整數(shù)倍
    
    int main() {printf("%d\n", sizeof(A));//12
    }

    示例二

    #include#pragma pack(2)
    struct A {char a;//1 +1
    	int b;//4  
    };
    #pragma pack()
    //1+1+4=6 是MIN { 4(大基本數(shù)據(jù)類型成員所占字節(jié)數(shù)),2(對齊方式) }的整數(shù)倍
    
    #pragma pack(4)
    struct B {int i;//4
    	char c;//1  
    	A a;//6  +1
    	int d;//4 (4+1+6=11不是MIN{4,4}的倍數(shù),需要再加1)
    };
    #pragma pack()
    //4+1+6+1+4=16 是MIN { 4,4 }的整數(shù)倍
    
    
    int main() {printf("%d\n", sizeof(A));//6
    	printf("%d\n", sizeof(B));//16
    }
    

    示例三

    #include#pragma pack(4)
    struct A {char a; //1  +3
    	double b;//8
    	int c;//4 
    	short d;//2	
    };
    #pragma pack()
    //1+3+8+4+2=18   最接近MIN{8,4}的整數(shù)倍   20    
    
    
    #pragma pack(4)
    struct B {int e;//4
    	char f;//1
    	A a;//20  +3 
    	double g;//8
    };
    #pragma pack()
    //4+1+20+3+8=36 最接近MIN{8,4}的整數(shù)倍  36
    
    
    
    int main() {printf("%d\n", sizeof(A));//20
    	printf("%d\n", sizeof(B));//36
    }
    

    你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

    網(wǎng)站標題:C語言—結(jié)構(gòu)體總結(jié)-創(chuàng)新互聯(lián)
    當前URL:http://aaarwkj.com/article22/cchpcc.html

    成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、定制開發(fā)網(wǎng)站制作、靜態(tài)網(wǎng)站移動網(wǎng)站建設(shè)、Google

    廣告

    聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

    搜索引擎優(yōu)化
    日本人妻内射一区二区| 国产精品国产一级国产av| 国产亚洲一区二区三区av| 日韩精品在线观看一| 午夜性生活视频免费看| 午夜欧美日韩精品久久久| 午夜性色福利在线播放| 91久久国产综合久久91| 中文字幕国产精品综合| 精品少妇人妻av不卡久久| 6080yy精品一区二区三区| 日韩精品在线观看一| 日韩福利成人av在线| 日韩av亚洲一区二区三区| 最新日韩中文字幕在线播放| 亚洲精品??一区二区| 最新国产成人免费在线视频| 欧美高清一区二区在线播放| 未满十八禁止免费在线观看| 精品国产欧美亚洲91| 欧美丰满熟妇视频在线| 色呦呦中文字幕在线播放| 国产高清剧情在线观看| 国产精品一级在线播放| 日韩精品日本道欧美黄片| 91久久国产综合精品女同| 91精品在线观看首页| 精品嫩模福利一区二区蜜臀| 久久99精品综合国产女同| 日本乱码中文字幕在线观看| 欧洲一区二区三区黄色| 抱着操才爽的免费视频观看| 日韩黄色成人在线观看| 亚洲国产欧美日韩在线不卡成人| 国产精品伦理一区二区三区| 桃色av一区二区三区| 国产精品一区二区三区日本| 亚洲欧美二区中文字幕| 男人天堂插插综合搜索| 免费激情在线视频网址| 亚洲一区欧美二区日韩|