真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【從0到1手把手帶你學(xué)C語(yǔ)言】初始C語(yǔ)言3-創(chuàng)新互聯(lián)

文章目錄
  • 前言
  • 1. 操作符
    • 1.1 優(yōu)先級(jí)
  • 2. 常見(jiàn)關(guān)鍵字
    • 2.1 typedef關(guān)鍵字
    • 2.2 static關(guān)鍵字
      • 2.2.1 修飾局部變量
      • 2.2.2 修飾全局變量
      • 2.2.3 修飾函數(shù)
      • 2.2.4 總結(jié)
  • 3. #define定義的常量的宏
  • 4. 指針
    • 4.1 內(nèi)存
    • 4.2 指針
    • 4.3 指針變量
    • 4.4 指針變量的大小
  • 5. 結(jié)構(gòu)體
    • 5.1 結(jié)構(gòu)體的創(chuàng)建
    • 5.2 引用結(jié)構(gòu)體
  • 最后

創(chuàng)新互聯(lián)提供成都網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì),品牌網(wǎng)站設(shè)計(jì)廣告投放平臺(tái)等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10余年的網(wǎng)站開(kāi)發(fā)和建站經(jīng)驗(yàn),助力企業(yè)信息化建設(shè),成功案例突破近1000家,是您實(shí)現(xiàn)網(wǎng)站建設(shè)的好選擇.前言

本章內(nèi)容是初始C語(yǔ)言的最后一節(jié),后續(xù)會(huì)逐一創(chuàng)作更詳細(xì)的文章

1. 操作符

本節(jié)簡(jiǎn)單介紹幾種操作符,后續(xù)會(huì)出文章細(xì)說(shuō)
操作符可以分為以下幾類(lèi):

1.1 優(yōu)先級(jí)

在這里插入圖片描述

算術(shù)運(yùn)算符中/和%值得注意
/如果兩個(gè)操作數(shù)都是整數(shù),那么結(jié)果是兩個(gè)整數(shù)相除的商,比如6/5=1
想要得到小數(shù),兩操作數(shù)至少有一個(gè)是小數(shù),6.0/5=1.2
%兩操作數(shù)必須是整數(shù),結(jié)果為兩數(shù)相除后的余數(shù),
余數(shù)符號(hào)和分子相同
(-3) % 5 = -3
3% (-5) = 3
單目運(yùn)算符中的++前置和++后置注意區(qū)分(--類(lèi)似,以++舉例)
#includeint main()
{int a = 2;
	int b = a++;
	printf("%d\n", b);//2
	printf("%d\n", a);//3
	a = 2;
	b = ++a;
	printf("%d\n", b);//3
	printf("%d\n", a);//3
	return 0;
}
前置++表示先自增,在引用
后置++表示先引用,在自增

注:[] . ->操作符在本文后續(xù)會(huì)介紹,與位有關(guān)的操作符后面會(huì)出文章細(xì)說(shuō)


2. 常見(jiàn)關(guān)鍵字

前面我們介紹變量時(shí)說(shuō)過(guò)變量的命名不能用關(guān)鍵字,那么C語(yǔ)言都有哪些關(guān)鍵字呢?
C語(yǔ)言常用的關(guān)鍵字有

數(shù)據(jù)類(lèi)型:
1.內(nèi)置類(lèi)型:char short int float long double ,long long ,long double,void
2.構(gòu)造類(lèi)型:enum ,struct,union
3.其他:const extern signed unsigned
存儲(chǔ)類(lèi)型:auto static register
循環(huán):while do for continue break 
選擇:if else switch case default break 
特殊:sizeof return goto typedef volatile
2.1 typedef關(guān)鍵字

typedef亦為類(lèi)型定義,也可以稱(chēng)類(lèi)型重定義,類(lèi)型替換

當(dāng)某種類(lèi)型名比較復(fù)雜,用typedef可以簡(jiǎn)化類(lèi)型名稱(chēng)

在這里插入圖片描述

通常用typedef重定義結(jié)構(gòu)體類(lèi)型


2.2 static關(guān)鍵字
在C語(yǔ)言中:
static是用來(lái)修飾變量和函數(shù)的
1. 修飾局部變量-稱(chēng)為靜態(tài)局部變量
2. 修飾全局變量-稱(chēng)為靜態(tài)全局變量
3. 修飾函數(shù)-稱(chēng)為靜態(tài)函數(shù)
2.2.1 修飾局部變量

改變局部變量的生命周期
無(wú)static定義

static定義

說(shuō)明static修飾局部變量改變變量的生命周期,離開(kāi)test函數(shù)時(shí)a不會(huì)銷(xiāo)毀。
所以下次調(diào)用test函數(shù)時(shí)不會(huì)創(chuàng)建變量a,更不會(huì)初始化。
2.2.2 修飾全局變量

無(wú)static定義

static定義

報(bào)錯(cuò)為無(wú)法解析g_val
說(shuō)明此時(shí)全局變量不具有外部鏈接屬性
2.2.3 修飾函數(shù)

無(wú)static定義
在這里插入圖片描述

static定義
在這里插入圖片描述

可以看出來(lái) static修飾函數(shù)使函數(shù)只能在當(dāng)前的源文件中引用該函數(shù)
2.2.4 總結(jié)
1.修飾局部變量,改變局部變量的存儲(chǔ)方式(堆存儲(chǔ)變?yōu)閿?shù)據(jù)段存儲(chǔ)),體現(xiàn)為生命周期變長(zhǎng)
2.修飾全局變量,改變?nèi)肿兞康逆溄訉傩裕ㄍ獠挎溄幼優(yōu)閮?nèi)部鏈接),體現(xiàn)為作用域變小
3.修飾函數(shù),改變函數(shù)的連接屬性(外部鏈接變?yōu)閮?nèi)部鏈接)
只能在定義函數(shù)的源文件中引用函數(shù)

附C和指針里的總結(jié)


3. #define定義的常量的宏

本屆內(nèi)容僅僅簡(jiǎn)單的介紹一下宏定義,后期會(huì)出詳細(xì)的文章與大家探討

#define MAX 100 //定義常量

我們想寫(xiě)a+b的函數(shù)可以這么寫(xiě)

int add(int a, int b)
{return a + b;
}
int main()
{int a = 10, b = 20;
int ret = add(a,b);//運(yùn)行的時(shí)候會(huì)進(jìn)入函數(shù)內(nèi)部并且?guī)С龇祷刂?printf("%d", ret);
return 0;
}

如果我們定義宏可以這么寫(xiě)

#define ADD(a,b) ((a)+(b))
int main()
{int a = 10, b = 20;
int ret = ADD(a,b); //編譯的時(shí)候就直接將ADD(a,b)替換成((a)+(b))
pritnf("%d", ret);
return 0;

總結(jié):

1.宏定義是替換,函數(shù)調(diào)用會(huì)進(jìn)入函數(shù)內(nèi)部并且返回值
2.宏定義在編譯的時(shí)候就會(huì)進(jìn)行,函數(shù)調(diào)用程序運(yùn)行時(shí)才會(huì)執(zhí)行
4. 指針

在熟悉指針之前我們先來(lái)說(shuō)一下內(nèi)存

4.1 內(nèi)存
內(nèi)存是電腦上特別重要的存儲(chǔ)器,計(jì)算機(jī)中程序的運(yùn)行都是在內(nèi)存中進(jìn)行的

在這里插入圖片描述
任務(wù)管理器中可以看見(jiàn)每個(gè)程序?qū)?nèi)存的占用有多少,當(dāng)程序運(yùn)行時(shí),會(huì)向內(nèi)存中申請(qǐng)存儲(chǔ)空間存儲(chǔ)程序運(yùn)行所需要的相關(guān)數(shù)據(jù)。
打個(gè)比方,每一個(gè)房間都需要空間,而公寓給了每個(gè)房間所需要的空間,內(nèi)存就相當(dāng)于公寓,房間相當(dāng)于各種各樣的數(shù)據(jù),數(shù)據(jù)不同,所占用的空間不同,這也是不同程序所占用內(nèi)存不同的原因

常見(jiàn)的內(nèi)存有4G ,8G ,16G ,32G

現(xiàn)在我們知道,內(nèi)存是存放數(shù)據(jù)的
每個(gè)房間都是獨(dú)立的,用隔板將它們分開(kāi),并且每個(gè)房間都有門(mén)牌號(hào),以便我們可以找到對(duì)應(yīng)的門(mén)戶(hù),因此,對(duì)于內(nèi)存

1.內(nèi)存首先被劃分為一個(gè)個(gè)的內(nèi)存單元
2.內(nèi)存單元有編號(hào)

針對(duì)結(jié)論1,每個(gè)內(nèi)存單元占多大空間?
每個(gè)內(nèi)存單元占1字節(jié)
解釋?zhuān)?br />我們知道存儲(chǔ)容量單位有bit–byte–kb–Mb……而占存儲(chǔ)容量最小的數(shù)據(jù)類(lèi)型是char 需要8bit位,如果選擇bit最為內(nèi)存單元,而每一個(gè)內(nèi)存單元對(duì)應(yīng)一個(gè)編號(hào),一個(gè)char就需要8個(gè)編號(hào),過(guò)于奢侈,如果選擇一個(gè)kb為內(nèi)存單元,那么一個(gè)內(nèi)存單元將可以存放1024個(gè)char數(shù)據(jù),但是只有一個(gè)編號(hào),所以編號(hào)和數(shù)據(jù)不能一一對(duì)應(yīng),綜上,選擇1byte為內(nèi)存單元最合適。
針對(duì)結(jié)論2,內(nèi)存單元是如何編號(hào)的?
內(nèi)存單元的編號(hào)是從32個(gè)0到32個(gè)1(32位)
解釋?zhuān)?br />32位機(jī)器上,有32根地址線(xiàn)
的撒
每根地址線(xiàn)在通電情況下有高電頻和低電頻兩種狀態(tài),所以32根地址線(xiàn)全部通電情況下有2^32種狀態(tài),分別是

因而我們將2^32種通電狀態(tài)作為內(nèi)存單元的編號(hào)

32位機(jī)器大內(nèi)存為4G,理由如下:
32位機(jī)器的內(nèi)存單元編號(hào)最多有2^32種,即內(nèi)存最多有2^32個(gè)小單元
,而每一種編號(hào)對(duì)應(yīng)的內(nèi)存單元占一個(gè)字節(jié),所以?xún)?nèi)存共占2^32byte,
1KB=1024byte,1MB=1024KB,1GB=1024MB,2^32字節(jié)剛好就是4GB
同理64位機(jī)器內(nèi)存大為8GB

內(nèi)存單元的編號(hào)等于地址等于指針


4.2 指針

指針就是地址,地址就是指針
我們現(xiàn)在來(lái)看程序運(yùn)行時(shí)是怎么使用內(nèi)存的

#includeint main()
{int a = 10;
return 0;
}

我們調(diào)式一下看一下內(nèi)存的分布
內(nèi)存編號(hào)和數(shù)據(jù)內(nèi)容均是十六進(jìn)制顯示

我們?cè)賮?lái)看一下a的地址

a占4個(gè)字節(jié) 我們打印a的地址 屏幕上顯示00EFFE08,
說(shuō)明a的地址是第一個(gè)字節(jié)的地址
4.3 指針變量
a中存放的是整數(shù),我們稱(chēng)a為整形變量
&a是一個(gè)指針,所以我們將存放指針的變量稱(chēng)為指針變量

指針變量具有指向性

pa中存放的是a的地址,所以我們可以通過(guò)pa找到a,相當(dāng)于我知道你家地址,我就可以找到你

int * pa
*說(shuō)明pa是指針變量
int說(shuō)明pa所指向的對(duì)象是int類(lèi)型

如何通過(guò)pa找到a?

*pa = 20;//*是解引用操作符,表示通過(guò)pa找到pa所指向的a
同理,指向字符的指針這么定義

```c
![
](https://img-blog.csdnimg.cn/fd503b17e5144efd9a6d302d94c0c797.png)

4.4 指針變量的大小

前面我們使用sizeof求過(guò)基本數(shù)據(jù)類(lèi)型的大小,那么指針的大小是多少呢?

我們發(fā)現(xiàn)指針在32平臺(tái)上的字節(jié)數(shù)都是4個(gè)字節(jié)
這是為什么呢?

指針變量存儲(chǔ)的值是地址,而前面說(shuō)過(guò)內(nèi)存單元的編號(hào)取值為32個(gè)0到32個(gè)1,
即指針的取值為32個(gè)0到32個(gè)1,32個(gè)二進(jìn)制剛好是4個(gè)字節(jié)
對(duì)于64為平臺(tái),64根地址線(xiàn),指針取值為64個(gè)0到64個(gè)1,占8個(gè)字節(jié)

總結(jié):
-` 變量的地址是變量占據(jù)的第一個(gè)字節(jié)地址

  • 指針是內(nèi)存中的一個(gè)存儲(chǔ)單元,編號(hào)由32/64個(gè)0、1組成
  • 指針變量的字節(jié)數(shù)僅僅取決與平臺(tái)的位數(shù)`

5. 結(jié)構(gòu)體

前面我們已經(jīng)了解了C語(yǔ)言的基本類(lèi)型

int,char,short,long,long long,float,double,long double 
指針類(lèi)型等

但是上述類(lèi)型具有單一性,只能用來(lái)定義只具有一種性質(zhì)的個(gè)體,這是不夠的,對(duì)于描述一個(gè)學(xué)生,我們不能用上述基本類(lèi)型的任意一個(gè)來(lái)定義,因?yàn)閷W(xué)生具有性別、年齡、學(xué)號(hào)等多個(gè)性質(zhì),因而,我們創(chuàng)建了自定義數(shù)據(jù)類(lèi)型,結(jié)構(gòu)體就是其中一種

5.1 結(jié)構(gòu)體的創(chuàng)建
struct Stu  //創(chuàng)建了一種類(lèi)型,該類(lèi)型屬于自定義類(lèi)型中的結(jié)構(gòu)體類(lèi)型,該類(lèi)型名叫struct Stu
{char name[20];
 int age;              //{}內(nèi)的所有變量稱(chēng)為結(jié)構(gòu)體成員,也叫做域
 char sex[5];
 char id[15];
}
struct Stu student1 = {"小紅",10,"女","12345"};
//表示用該類(lèi)型定義了一個(gè)變量并初始化
5.2 引用結(jié)構(gòu)體

對(duì)于結(jié)構(gòu)體等有兩個(gè)專(zhuān)屬操作符,分別是->和.
例如,student1過(guò)生日了,年齡增加了一歲,可以這么表示

student1.[age] = student1.[age] + 1; 
//student1表示找到需要引用的結(jié)構(gòu)體變量,操作符.表示找到該變量的某個(gè)成員
找到age成員并且讓它加一

當(dāng)我們不知道結(jié)構(gòu)體變量的名字時(shí),但是直到它的地址

struct Stu* ps = &student1;
ps->age = ps->age + 1; //等價(jià)*(ps).[age]
操作符->的做操作數(shù)是針對(duì)指針,表示找到地址值為ps的變量,->表示找到該變量的某個(gè)成員

最后

初始C語(yǔ)言1
初始C語(yǔ)言2
初始C語(yǔ)言3
三篇文章已經(jīng)將C語(yǔ)言的知識(shí)點(diǎn)粗略的介紹的一遍,后續(xù)的文章會(huì)逐一針對(duì)每章內(nèi)容進(jìn)行更深入、詳細(xì)的討論,如果您覺(jué)得哪里寫(xiě)的有問(wèn)題,歡迎指正!
最后:如果您覺(jué)得文章對(duì)您有幫助,請(qǐng)不要吝嗇手中的贊,這對(duì)我來(lái)說(shuō)很重要,也是我繼續(xù)創(chuàng)作的動(dòng)力,謝謝!

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


分享名稱(chēng):【從0到1手把手帶你學(xué)C語(yǔ)言】初始C語(yǔ)言3-創(chuàng)新互聯(lián)
本文URL:http://weahome.cn/article/djdojc.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部