日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入浅出之构造类型

發(fā)布時(shí)間:2024/9/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入浅出之构造类型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、構(gòu)造類型的概念

?構(gòu)造類型也稱為組合類型,是由基本類型按照一定規(guī)律組合而成。

二、數(shù)組類型

數(shù)組是由同類型數(shù)組組合而成的序列,用一個(gè)統(tǒng)一的數(shù)組名來標(biāo)識(shí)這一組數(shù)據(jù)。

2.1 數(shù)組定義

一維數(shù)組:類型標(biāo)識(shí)符 數(shù)組名[常量表達(dá)式];

二維數(shù)組:類型標(biāo)識(shí)符 數(shù)組名[常量表達(dá)式][常量表達(dá)式];

三維數(shù)組:類型標(biāo)識(shí)符 數(shù)組名[常量表達(dá)式][常量表達(dá)式][常量表達(dá)式];

2.2 數(shù)組的初始化

1) 定義數(shù)組的同時(shí)可以直接給數(shù)組中的元素賦初值,將需要賦的值一一列舉并用一對(duì)大括號(hào)括起來,然后用逗號(hào)分隔即可。

如:

int array[5]={1,2,3,4,5};

2) 只給數(shù)組中的部分元素賦初值;

int array[5]={1,2,3};

其余元素值均為0

3)如果初始化數(shù)組時(shí),全部給出,可以不指定數(shù)組長度

int array[]={1,2,3,4,5};

?2.3 數(shù)組元素的引用

方式1:下標(biāo)法

格式:數(shù)組名[下標(biāo)]

方式2:地址法

格式:*(數(shù)組名+下標(biāo))

#include <QCoreApplication> #define f(x) x*x #define g(x) (x)*(x) #define h(x) ((x)*(x)) int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);int array[5] = {1,2,3,4,5};qDebug("%d",array[3]);qDebug("%d",*(array+3));int *p = array;qDebug("%d",*(p+3));int *pp = &array[3];qDebug("%d",*pp);return a.exec(); } 輸出結(jié)果: 4 4 4 4

2.4 字符串與字符數(shù)組

? ? ? ?字符串是若干個(gè)有效字符(字母、數(shù)字、專用字符、轉(zhuǎn)義字符等)的序列。C語言中沒有字符串變量,字符串不是存放在一個(gè)變量中,而是存放在一個(gè)字符型數(shù)組中。因此,為了存放字符串,常常在程序中定義字符型數(shù)組。

? ? ? ?字符串與字符數(shù)組兩個(gè)術(shù)語在含義上有區(qū)別,字符串存放在字符數(shù)組中,但字符數(shù)組與字符串可以不等長,字符串以“\0”作為結(jié)束標(biāo)志。

字符數(shù)組的賦初值

1) 逐個(gè)為元素值賦初值

char str[2]={'a','b'};

2)? ?對(duì)字符數(shù)組指定一個(gè)字符串初值

char str[]={"abcd"};

注意:單個(gè)字符是用單括號(hào)括起來,而字符串是用雙括號(hào)括起來,在指定字符串賦初值時(shí),將字符串中各個(gè)字符逐個(gè)賦給字符數(shù)組中各個(gè)元素,但要注意一點(diǎn)是系統(tǒng)會(huì)自動(dòng)地在最后一個(gè)字符后面加入一個(gè)‘\0’字符。

三、結(jié)構(gòu)體類型

3.1 結(jié)構(gòu)體類型

格式:

struct 結(jié)構(gòu)體名{

? ? ? 成員項(xiàng)表列;

};

注意:不要忘寫花括號(hào)外的分號(hào)

結(jié)構(gòu)體類型特點(diǎn):

1) 它由若干個(gè)數(shù)據(jù)項(xiàng)組成,每一個(gè)數(shù)據(jù)項(xiàng)都屬于一種已有定義的類型,每個(gè)數(shù)據(jù)項(xiàng)都稱為一個(gè)結(jié)構(gòu)體的成員,也可以稱為“域”。

2)結(jié)構(gòu)體類型并非一種,而可以由很多種,這與基本類型不同。

3)定義一個(gè)結(jié)構(gòu)體類型,并不意味著系統(tǒng)將分配一段內(nèi)存單元來存放各數(shù)據(jù)項(xiàng)成員。注意:這是定義類型而不是定義變量,定義一個(gè)類型只是表示這個(gè)類型的結(jié)構(gòu),即告訴系統(tǒng)它由哪些類型的成員,各占用多少字節(jié),各按什么形式存儲(chǔ),并把它作為一個(gè)整體來處理,同時(shí)只定義類型是不分配內(nèi)存單元的。

4)系統(tǒng)沒有預(yù)先定義結(jié)構(gòu)體類型,凡需使用結(jié)構(gòu)體類型數(shù)據(jù)的,都必須在程序中自己定義。

3.2 結(jié)構(gòu)體類型變量的定義

1) 在定義了結(jié)構(gòu)體類型之后,把變量定義為該類型;

如:struct person student,worker;

2)在定義一個(gè)結(jié)構(gòu)體類型的同時(shí)定義一個(gè)或若干個(gè)結(jié)構(gòu)體類型變量;

struct 結(jié)構(gòu)體名{

成員表列;

}變量名表列;

如:struct person{

} student,worker;

3)直接定義結(jié)構(gòu)體類型變量;

如:struct{

}student,worker;

注意:此方式無法定義其他結(jié)構(gòu)體類型變量;

3.3 結(jié)構(gòu)體類型變量的初始化及引用

在初始化時(shí),按照定義的結(jié)構(gòu)體類型的數(shù)據(jù)結(jié)構(gòu),依次寫出各初始值,依次寫出各初值。

struct person student={“Wang Li”,18,'M'};

引用方法:結(jié)構(gòu)體變量.成員名

如:student.name

注意:C語言不允許把一個(gè)結(jié)構(gòu)體作為一個(gè)整體進(jìn)行輸入與輸出。

3.4 結(jié)構(gòu)體與數(shù)組區(qū)別

數(shù)組只能按序組織多個(gè)同類型的數(shù)據(jù),結(jié)構(gòu)體可以組織多個(gè)不同類型的數(shù)據(jù)。

?

四、共用類型

共用體數(shù)據(jù)類型是指將不同的數(shù)據(jù)項(xiàng)存放于同一段內(nèi)存單元的一種構(gòu)造數(shù)據(jù)類型。

定義格式:

union 共用體名{

成員表列;

}變量表項(xiàng);

共用體類型很相似,與結(jié)構(gòu)體類型區(qū)別是共用體變量中的各個(gè)成員共用內(nèi)存中同一段變量空間。

注意:一個(gè)共用體變量不能同時(shí)存放多個(gè)成員變量的值,而只能存放其中一個(gè)值,這就是最后賦予它的值。

#include <QCoreApplication> //#include "test.h" #define f(x) x*x #define g(x) (x)*(x) #define h(x) ((x)*(x)) union exam{int a;float b;char c; } x;int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);union exam *pt;pt = &x;x.a = 8;x.b = 7.5;x.c = 'A';pt->a = 8;pt->b = 7.5;pt->c = 'A';qDebug("%d,%.2f,%c",x.a,x.b,x.c);qDebug("%d,%.2f,%c",pt->a,pt->b,pt->c);qDebug("%d,%d",sizeof(int),sizeof(float));return a.exec(); } 輸出結(jié)果是: 1089470529,7.50,A 1089470529,7.50,A 4,4

? union結(jié)構(gòu)體內(nèi)存情況:

?—— —— —— —— a

?—— —— —— —— b

——? ? ? ? ? ? ? ? ? ? ? ? ? c

五、枚舉類型

枚舉類型,是指這種類型的變量的值只能是指定的若干個(gè)名字之一。

#include <QCoreApplication>enum color_name{red,yellow,blue,white,black };int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);enum color_name color;color = black;qDebug("%d",color);return a.exec(); }輸出結(jié)果是: 4

1) enum是關(guān)鍵字,標(biāo)識(shí)枚舉類型,定義枚舉類型必須用enum開頭;

2)在定義枚舉類型時(shí),花括號(hào)中一些名字是程序設(shè)計(jì)者自己定義,命名規(guī)則與標(biāo)識(shí)符相同;

3)它的值是一些整數(shù),如果沒有特殊定義,系統(tǒng)會(huì)自動(dòng)默認(rèn)從0開始,0,1,2,3...

4)可以在定義類型時(shí)對(duì)枚舉變量進(jìn)行初始化

enum color_name{red = 3,yellow,blue,white = 8,black };

5)枚舉常量可以進(jìn)行比較

if (color == red)qDebug("red");

6) 一個(gè)枚舉變量的值只能是定義的幾個(gè)枚舉常量之一,可以將枚舉常量賦給枚舉變量;

color = red;(正確) color = 0;(錯(cuò)誤)

7) 枚舉常量不是字符串,不能用下面方法輸出字符串“red”;

qDebug("%s",red);

可通過

qDebug("red");

?

六、文件類型

詳見《深入淺出之文件》

總結(jié)

以上是生活随笔為你收集整理的深入浅出之构造类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。