freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言:第11章__復(fù)雜數(shù)據(jù)類型-在線瀏覽

2024-09-11 16:00本頁面
  

【正文】 (?) 結(jié)構(gòu)體變量名 .成員名 .子成員名 …… 最低級子成員名 例 struct student { int num。 char sex。 float score。 } stu1, stu2。 (√) 例 struct student { int num。 struct date { int month。 int year。 } stu1, stu2, *pstu = amp。 num name birthday month day year = 12。 注意: 在利用指針引用結(jié)構(gòu)體成員時, 和 之間不能有空格。 struct Student_Info stu = {20220306, ZhangMing, 39。, 18, 1, 90}。M39。 struct Date { int year。 //月 int day。 struct Stu_Info { char no[9]。 //姓名 char sex。 //生日 unsigned int classno。 //成績 }。M39。 語言程序設(shè)計教程 第二版 第十一章 復(fù)雜數(shù)據(jù)類型 C 結(jié)構(gòu)體變量的賦值 ? 結(jié)構(gòu)體變量初始化賦值 ? 定義結(jié)構(gòu)體類型的同時,定義結(jié)構(gòu)體變量并賦初值 struct [結(jié)構(gòu)體類型名 ] { 初值表 … … } 變量名 = {成員 1的值,成員 2的值, … , 成員 n的值 }; struct Date { int year, month, day。 struct { int year, month, day。 或 struct Student_Info { char no[9]。 //姓名 char sex。 //年齡 unsigned int classno。 //成績 } student = {20220306, ZhangMing, 39。, 18, 1, 90}。 strcpy (, )。 = 。 = 。 strcpy (, 20220306)。 = 39。 = 18。 = 90。 stu1 = stu。stu1, amp。 語言程序設(shè)計教程 第二版 第十一章 復(fù)雜數(shù)據(jù)類型 C 【 例 】 計算學(xué)生 5門課的平均成績,最高分和最低分。 float avegrade, maxgrade, mingrade。 void main ( ) { int i。 printf (input the grade of five course:\n)。 i 5。[i])。 = [0]。 for (i = 0。 i++) //求平均分、最高分、最低分 { += [i]。 = ([i] ) ? [i] : 。 printf (avegrade = % maxgrade = % mingrade = %\n, , , )。[i]的運(yùn)算順序: amp。的優(yōu)先級 語言程序設(shè)計教程 第二版 第十一章 復(fù)雜數(shù)據(jù)類型 C 結(jié)構(gòu)體變量內(nèi)存分配問題透析 語言程序設(shè)計教程 第二版 第十一章 復(fù)雜數(shù)據(jù)類型 C 結(jié)構(gòu)體變量定義以后,系統(tǒng)會為其分配一定大小的內(nèi)存空間,但分配內(nèi)存空間的大小與 C語言程序所處的編譯環(huán)境有密切的關(guān)系。 char y。 } a。 sizeof(a) = sizeof() + sizeof() + sizeof() = 8 + 1 + 2 = 11( byte) 或 sizeof(struct MyStruct) = sizeof(double) + sizeof(char) + sizeof(int) = 8 + 1 + 2 = 11( byte) 語言程序設(shè)計教程 第二版 第十一章 復(fù)雜數(shù)據(jù)類型 C ? 基于 TC或 BC環(huán)境下的結(jié)構(gòu)體變量內(nèi)存分配 struct MyStruct { double x。 int z。 0 1 2 3 4 5 6 7 8 9 10 ( 8 byte) ( 1 byte) ( 2 byte) a( 11 byte) 結(jié)構(gòu)體變量 a的內(nèi)存分配示意圖: 語言程序設(shè)計教程 第二版 第十一章 復(fù)雜數(shù)據(jù)類型 C ? 基于 VC環(huán)境下的結(jié)構(gòu)體變量內(nèi)存分配 在 VC環(huán)境下,結(jié)構(gòu)體變量分配內(nèi)存的方式與 TC或 BC是不同的, 其所占內(nèi)存空間的大小不一定等于結(jié)構(gòu)體變量所包含的每個成員所占內(nèi)存空間大小之和。 char y。 } a。為了提高 CPU的存儲速度, VC對結(jié)構(gòu)體中的成員變量的起始地址做了 “ 對齊 ” 處理。 語言程序設(shè)計教程 第二版 第十一章 復(fù)雜數(shù)據(jù)類型 C ? 基于 VC環(huán)境下的結(jié)構(gòu)體變量內(nèi)存分配 類型 對齊方式 (變量存放的起始地址相對于結(jié)構(gòu)的起始地址 的偏移量) char 偏移量必須為 sizeof(char) 即 1的倍數(shù) short 偏移量必須為 sizeof(short) 即 2的倍數(shù) int 偏移量必須為 sizeof(int) 即 4的倍數(shù) long 偏移量必須為 sizeof(long) 即 4的倍數(shù) float 偏移量必須為 sizeof(float) 即 4的倍數(shù) double 偏移量必須為 sizeof(double) 即 8的倍數(shù) VC下常用數(shù)據(jù)類型的對齊方式 在 VC編譯環(huán)境下,結(jié)構(gòu)體變量內(nèi)存分配方式為: (1) 結(jié)構(gòu)體變量中各成員變量在存放的時候根據(jù)在結(jié)構(gòu)體中出現(xiàn)的順序依次申請空間,同時按照上表的對齊方式調(diào)整位置,空缺的字節(jié) VC會自動填充。 語言程序設(shè)計教程 第二版 第十一章 復(fù)雜數(shù)據(jù)類型 C ? 基于 VC環(huán)境下的結(jié)構(gòu)體變量內(nèi)存分配 struct MyStruct { double x。 int z。 (3) 再接下來為第三個成員 z分配空間,這時下一個可以分配的地址對于結(jié)構(gòu)體的起始地址的偏移量為 9,不是 sizeof(int)=4的倍數(shù),為了滿足對齊方式對偏移量的約束問題, VC自動填充 3個字節(jié) (這三個字節(jié)沒有放什么東西),這時下一個可以分配的地址對于結(jié)構(gòu)的起始地址的偏移量為 12,剛好是 sizeof(int)=4的倍數(shù),所以把 z存放在偏移量為 12的地方,該成員變量占用 sizeof(int)=4個字節(jié); 內(nèi)存分配方法: (1) 首先為第一個成員 x分配空間,其起始地址跟結(jié)構(gòu)體的起始地址相同(偏移量 0,剛好為 sizeof(double)的倍數(shù)),該成員變量占用sizeof(double)=8個字節(jié); (2) 接下來為第二個成員 y分配空間,這時下一個可以分配的地址對于結(jié)構(gòu)的起始地址的偏移量為 8,是 sizeof(char)的倍數(shù),所以把 y存放在偏移量為 8的地方滿足對齊方式,該成員變量占用 sizeof(char)=1個字節(jié); 語言程序設(shè)計教程 第二版 第十一章 復(fù)雜數(shù)據(jù)類型 C ? 基于 VC環(huán)境下的結(jié)構(gòu)體變量內(nèi)存分配 struct MyStruct { double x。 int z。 這時整個結(jié)構(gòu)的成員變量已經(jīng)都分配了空間,總的占用的空間大小為:8+1+3+4=16,剛好為結(jié)構(gòu)的字節(jié)邊界數(shù)( 即結(jié)構(gòu)中占用最大空間的類型所占用的字節(jié)數(shù) sizeof(double)=8) 的倍數(shù),所以沒有空缺的字節(jié)需要填充。 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ( 8 byte) ( 1 byte) 自動填充 ( 3 byte) ( 4 byte) a ( 16 byte) sizeof(double)=8的倍數(shù) sizeof(char)=1的倍數(shù) sizeof(int)=4的倍數(shù) 語言程序設(shè)計教程 第二版 第十一章 復(fù)雜數(shù)據(jù)類型 C ? 基于 VC環(huán)境下的結(jié)構(gòu)體變量內(nèi)存分配 結(jié)構(gòu)體變量定義 內(nèi)存分配說明 struct MyStruct { char y。 下一個可用的地址的偏移量為 1,不是sizeof(double)=8的倍數(shù),需要補(bǔ)足 7個字節(jié) 才能使偏移量變?yōu)?8(滿足對齊方式),因此 VC自動填充 7個字節(jié), x存放在偏移量為 8 的地址上,它占用 8個字節(jié) int z。 空間總的大小為 1+7+8+4=20,不是結(jié)構(gòu)體的字節(jié)邊界數(shù)(即結(jié)構(gòu)體中占用最大空間的類型所占用的字節(jié)數(shù) sizeof(double)=8)的倍數(shù),所以需要 填充 4個字節(jié) ,以滿足結(jié)構(gòu)體變量 b所占內(nèi)存空間的大小為 sizeof(double)=8的倍數(shù)。 double x。 } b。 typedef語句的格式為: typedef 類型名 類型名的別名; 必須是已經(jīng)定義的數(shù)據(jù)類型名或 C語言提供的基本類型名 必須是合法的標(biāo)識符,通常用 大寫字母 來表示 必須 以 分號 結(jié)尾 typedef int INTEGER。 unsigned int age, workyears。 }。 //TEACHER是別名 INTEGER a。 STRING str。 TEACHER t。 typedef char ARRAY[81]。 //相當(dāng)于 char str[81]。 ? 結(jié)構(gòu)體數(shù)組的定義 三種形式: age no name sex classno grade age no name sex classno grade … stu[0] stu[9] …… 形式一: struct Student_Info { char no[9], name[20], sex。 float grade。 struct Student_Info stu[10]。 unsigned int age, classno。 } stu[10]。 unsigned int age, classno。 } stu[10]。 no name sex age classno grade …… …… …… …… …… …… 結(jié)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1