C語言中基本的數(shù)據(jù)類型有哪些-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關(guān)C語言中基本的數(shù)據(jù)類型有哪些,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

十余年的東豐網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整東豐建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“東豐網(wǎng)站設(shè)計”,“東豐網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

一、對結(jié)構(gòu)體的理解

我們知道C語言中有基本數(shù)據(jù)類型:

1、整(數(shù))型:

int:基本整型,用于存儲整數(shù),占4個字節(jié),默認值為0

short:短整型,占2個字節(jié)

long:長整型,占4個字節(jié)

long long:雙長整型,占8個字節(jié),比較少用

2、浮點型

float:單精度浮點型,占4個字節(jié)

double:雙精度浮點型,占8個字節(jié)

3、字符型

char:字符型,用于存儲單字符,占1個字節(jié)。

(與Java等語言不同的是,c語言中沒有字符串類型,需要使用字符型數(shù)組來存放字符串)

// 定義字符型數(shù)組并賦值
 char string[3]; 
 string = ”abc”;

除了這些簡單的、不可拆分的原子數(shù)據(jù)類型,還存在著復(fù)合數(shù)據(jù)類型(也叫構(gòu)造類型),如枚舉類型、數(shù)組類型、結(jié)構(gòu)體類型、共用體類型,這里我們要討論的就是其中的結(jié)構(gòu)體類型。

注:我認為,數(shù)據(jù)類型其實包含了兩個概念,首先是將具有相同屬性的數(shù)據(jù)處理成一個集合,使屬性得以被限定、區(qū)分(如int a=“A”;是錯誤的);其次是在這個集合上定義了一些操作,如int型的加減乘除運算。

二、結(jié)構(gòu)體的定義

1.標準定義的格式說明

struct 結(jié)構(gòu)名 
 { 
  數(shù)據(jù)類型 變量名; 
  數(shù)據(jù)類型 變量名; 
  ... 
 } ;

struct關(guān)鍵字用來聲明結(jié)構(gòu)體,花括號內(nèi)的結(jié)構(gòu)體成員由我們?nèi)我獍l(fā)揮(若存在相同的數(shù)據(jù)類型,也可以簡寫:int a,b,c;)。

這里的結(jié)構(gòu)名叫做結(jié)構(gòu)體的標識符,類似于int a中的int,但僅僅是類似,請看下面:

//定義一個名為student的結(jié)構(gòu)體
struct student{  
	char name[8];  
	int age;  
	char sex[2];  
};

現(xiàn)在我們只是按照自己的需求,完成了對結(jié)構(gòu)體student的定義,然而這僅僅是個模版,編譯后并沒有為其分配空間,下面讓我們?nèi)ナ褂眠@個新的數(shù)據(jù)類型:

student stu;//報錯

在上面提到student這個標識符只是類似于基本數(shù)據(jù)類型的類型名稱,因為要想完全在概念上等價,我們需要在前面加上struct關(guān)鍵字,即struct student是一個整體,不可以省去struct:

struct student stu; //成功編譯

現(xiàn)在,我們已經(jīng)成功定義了一個變量stu,系統(tǒng)為其分配了該數(shù)據(jù)類型(結(jié)構(gòu)體)所需要的儲存空間。
以上兩部分還可以簡寫在一起:

struct student{  
	char name[8];  
	int age;  
	char sex[2];  
}stu;//將stu寫在尾綴,構(gòu)造結(jié)構(gòu)體的同時完成了對結(jié)構(gòu)體變量的定義,如需多個結(jié)構(gòu)體變量,可以使用逗號分隔開
struct student{  
	char name[8];  
	int age;  
	char sex[2];  
}stu1,stu2,stu3;//同時定義多個結(jié)構(gòu)體變量,如果需要定義多個具有相同模式的結(jié)構(gòu)體變量時用這種方法比較方便

到這里,你有沒有想過能不能省略結(jié)構(gòu)體名稱呢?可以。此時定義的結(jié)構(gòu)體稱為匿名結(jié)構(gòu)體(也叫無名結(jié)構(gòu)體):

struct{  
	char name[8];  
	int age;  
	char sex[2];  
}stu1,stu2,stu3;//省略掉標識符后,依然能完成變量的定義,但此時要注意,我們已經(jīng)無法通過在結(jié)構(gòu)體外定義新的該結(jié)構(gòu)體的變量了,所以匿名結(jié)構(gòu)體僅僅在確定不會再定義其他結(jié)構(gòu)體變量的時候使用

2.含typedef定義的格式說明

typedef關(guān)鍵字,作用是給一種數(shù)據(jù)類型定義一個新名字。這里的數(shù)據(jù)類型包括內(nèi)部數(shù)據(jù)類型(int,char等基本數(shù)據(jù)類型)和自定義的數(shù)據(jù)類型(struct等)。使用typedef起別名有兩個好處,一是給變量一個易記、含義明確的新名字,二是簡化一些比較復(fù)雜的類型聲明(如struct student中的struct)。

typedef struct student{   
	char name[8];   
	int age;   
	char sex[2];   
}xuesheng;
xuesheng stu;//省略struct,使用別名完成變量stu的創(chuàng)建

現(xiàn)在,仔細閱讀的你不難發(fā)現(xiàn):此時尾綴xuesheng的地位已經(jīng)不可與同日而語了,時過境遷,它不再是我們偷懶定義出來的變量,而是結(jié)構(gòu)體student的別名了,此時struct student與xuesheng等價。

typedef struct{   
	char name[8];   
	int age;   
	char sex[2];   
}xuesheng;//這里的student依然可以去掉!即使去掉,我們也可以在以后去使用它的別名xuesheng

三.結(jié)構(gòu)體的賦值

一個變量的初始化其實包含兩個內(nèi)容,一是創(chuàng)建變量,二是為變量賦值以使用?,F(xiàn)在讓我們賦值吧。

1、定義結(jié)構(gòu)體之后進行賦值:

a.逐個賦值:

stu.name = "Jack";//錯誤,不能直接給數(shù)組名賦值,因為數(shù)組名是一個常量
strcpy(stu.name, "Chenhao");//不能直接給數(shù)組名賦值,因為數(shù)組名是一個常量。
stu.num = 21;
strcpy(stu.sex, "男");

b.整體賦值:

stu = (struct Student){"Chenhao", 21, "男"};//此時需要強制類型轉(zhuǎn)換,因為數(shù)組賦值也是使用{},不轉(zhuǎn)換的話系統(tǒng)無法區(qū)分!
stu = (xuesheng){"Chenhao", 21, "男"};//別忘了也可以用等價的別名喲~

2、定義結(jié)構(gòu)體同時完成賦值:

struct student{   
	char name[8];   
	int age;   
	char sex[2];   
}stu = {"Chenhao", 21, "男"};//此時很直觀是在為結(jié)構(gòu)體變量賦值,因此不需要強制類型轉(zhuǎn)換

3、復(fù)制已經(jīng)初始化的結(jié)構(gòu)體變量以進行賦值:

struct student{   
	char name[8];   
	int age;   
	char sex[2];   
}stu = {"Chenhao", 21, "男"};
struct student stu1 = stu;//不是通過指針指向來賦值,確確實實是復(fù)制了一份相同的stu成員變量給放到了新變量stu1的存儲空間里,也就是stu1如實地開辟了自己的空間

以上賦值的方式需要注意初始化值的類型和順序要與結(jié)構(gòu)體聲明時成員對應(yīng)的類型和順序保持一致!另外,部分初始化的方式請移步自行查閱。

四.結(jié)構(gòu)體的使用

與結(jié)構(gòu)體數(shù)組的成員訪問相同,一樣放在結(jié)構(gòu)體數(shù)組中講。

五.結(jié)構(gòu)體數(shù)組(一維)

結(jié)構(gòu)體類型也與基本數(shù)據(jù)類型一樣,可以作為數(shù)組的元素的類型。

結(jié)構(gòu)數(shù)組定義格式:

struct 結(jié)構(gòu)名 { 
成員列表 
} 數(shù)組名[數(shù)組長度];

如:

struct student{
 char name[8];   
	int age;   
	char sex[2]; 
}stu[145];//定義一個結(jié)構(gòu)結(jié)構(gòu)數(shù)組stu,共有145個元素,即145個學生的學生信息

結(jié)構(gòu)體數(shù)組的賦值

//整體賦值:
stu = (struct Student){{"Zhangsan", 18, "男"},{"Lisi", 15, "女"},......}; 
stu[0] = (struct Student){"Chenhao", 21,"男"};
//結(jié)構(gòu)體變量成員逐個賦值:
strcpy(stu[144].name, "Smith");
stu[144].age = 10;
stu[144].sex = "女";
//逐個輸出結(jié)構(gòu)數(shù)組的元素
int length = sizeof(stu) / sizeof(struct student);//結(jié)構(gòu)體數(shù)組的長度,結(jié)構(gòu)體數(shù)組變量大小/單個模版大小
for (int i = 0; i<length; i++) { 
 printf("姓名:%s 年齡:%d 性別:%s \n", stu[i].name, stu[i].age, stu[i].sex);
}

結(jié)構(gòu)體數(shù)組小歸納:

名稱含義
stustudent結(jié)構(gòu)體數(shù)組
stu[2]student結(jié)構(gòu)的一個變量,為第三個同學
stu[2].namechar型數(shù)組,第三個同學的名字數(shù)組
stu[2].name[0]第三個同學的名字的首字母

五.結(jié)構(gòu)體與指針

1、指針指向結(jié)構(gòu)體

//直接
struct student{
 char name[8];   
	int age;   
	char sex[2]; 
}*pstu;
//后續(xù)間接
typedef struct student{
 char name[8];   
	int age;   
	char sex[2]; 
}stu;
stu *pstu;//定義了一個指針變量,它只能指向Student結(jié)構(gòu)體類型的結(jié)構(gòu)體變量

如果想把已經(jīng)定義的結(jié)構(gòu)體變量交給一個指針,則必須用取址符&:

struct student{
 char name[8];   
	int age;   
	char sex[2]; 
}stu;
pstu =stu//錯誤
pstu =&stu//正確

(這里要說明的是,結(jié)構(gòu)體變量名稱單獨拿出來代表變量全體成員值的集合,這與數(shù)組不同,數(shù)組名稱在使用時直接轉(zhuǎn)化為該數(shù)組的起始地址)

2、通過結(jié)構(gòu)指針間接訪問成員值:

(*結(jié)構(gòu)指針變量). 成員名

結(jié)構(gòu)指針變量 -> 成員名(我們管“->”叫做“箭頭”)

(*pstu).name;
//或
pstu->name;

注意(* pstu).name的小括號不能省略,成員符“.”優(yōu)先級較大,取值符“ *”優(yōu)先級在其次,去掉括號就相當于 *(pstu.name)了。

總結(jié)

格式千千萬,只有全掌握才能閱讀別人的代碼,但在實際開發(fā)中最推薦的格式依然是:

typedef struct student{   
	char name[8];   
	int age;   
	char sex[2];   
}xuesheng;

也不要忘了在整體賦值且在結(jié)構(gòu)體外賦值時的強制轉(zhuǎn)換。

如果有所收獲,點個贊唄~

最后:

#include<stdio.h>

int main(){
	printf("aiweiye forever.");
}

以上就是C語言中基本的數(shù)據(jù)類型有哪些,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站標題:C語言中基本的數(shù)據(jù)類型有哪些-創(chuàng)新互聯(lián)
URL標題:http://www.muchs.cn/article10/dsjjdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、用戶體驗、面包屑導航、網(wǎng)站收錄、品牌網(wǎng)站制作、軟件開發(fā)

廣告

聲明:本網(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)

小程序開發(fā)