目錄
創(chuàng)新互聯(lián)是一家網(wǎng)站設(shè)計公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營產(chǎn)品:響應(yīng)式網(wǎng)站開發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡(luò)互動的體驗,以及在手機等移動端的優(yōu)質(zhì)呈現(xiàn)。成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、移動互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運營、VI設(shè)計、云產(chǎn)品.運維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認(rèn)真對待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價值服務(wù)。?編輯
前言:
1.關(guān)鍵字:
2.#define的定義常量和宏
(1)#define定義符號
(2)定義宏
3.指針:
指針的存放與解引用:
計算指針變量的大?。?/p>
結(jié)尾:
時光飛逝,從一開始的什么都不懂的萌新到現(xiàn)在對C語言有一定認(rèn)識的我們,我們C語言的知識寶庫在不斷的被拓展著,在學(xué)習(xí)的過程中我們也能不斷的去完善自己。從一開始的初學(xué)C語言(1)到現(xiàn)在的初識C語言(完)。我也是經(jīng)歷了許多,初識C語言結(jié)束我們也會到達(dá)另一個高度。那么話不多說,現(xiàn)在就開始我們的初識C語言的完結(jié)篇吧。
1.關(guān)鍵字:在C語言中也存在著類似操作符,可以讓我們的C語言文件變得更加便利的英文,我們將這一類英語單詞稱為——關(guān)鍵字。
在這其中有一部分關(guān)鍵字我們在初識C語言的時候暫時不會用到,所以今天我們就簡略的講解一下吧。
注:變量名字不能取為關(guān)鍵字!
(1)auto:
意為自動,自動創(chuàng)建自動銷毀,局部變量都為自動變量,現(xiàn)如今C語言自動省略auto。
int main()
{
int num = 10;
auto int sum = 20;//等于int sum = 20
return 0;
}
(2)break:
break用于循環(huán)語句中,用于打破循環(huán)(跳出循環(huán)),使循環(huán)結(jié)束。
int main()
{
int a = 0;
scanf("%d",&a);
int i = 0;
while(a)
{
i++;
if(i==a/2)
{
break;
}
}
printf("%d\n",i);
return 0;
}
(3)register——寄存器:
存儲內(nèi)存,用于服務(wù)CPU,寄存器單位為字節(jié)。register的使用。VS也會自動進行判斷,將一部分它認(rèn)為需要的變量加載到寄存器當(dāng)中。(意義不大)
int main()
{
register int a = 10;//建議將a放在寄存器中
return 0;
}
(4)typedef——重命名:
如同上面的代碼一樣,typedef是將類型進行重命名,在里面我們將unsigned int 重命名為unit,之后我們要使用unsigned int類型的時候只要輸入uint就可以進行運行。(上圖age和age2的類型相同,類似別名)
(5)static——靜態(tài):
static三大作業(yè):
1.修飾局部變量 2.修飾全局變量 3.修飾函數(shù)
修飾局部變量——在我們寫代碼的時候時常都用到函數(shù),這個時候我們在函數(shù)里面創(chuàng)建一個變量,計算該變量,并輸出,但是在函數(shù)結(jié)束的時候該變量被銷毀。例如:
我們可以看到這個代碼在函數(shù)部分運用了static,如果不用static的話每次函數(shù)結(jié)束a被銷毀,每次打印a都是0開始然后進行a++得到1。但是在應(yīng)用了static后,在函數(shù)結(jié)束后,a不會被銷毀,第一次進入為1,第二次進入為2直到為10的時候停止打印。這就是static在局部變量的作用,延長函數(shù)的生命周期。這里就涉及到我們的棧區(qū)。
在棧區(qū)的臨時變量,進入作用域創(chuàng)建,出作用域1釋放,static的作用也就是將我們的局部變量延長生命周期。(注:變量還是局部變量,并沒有因此變?yōu)槿肿兞浚?/p>
全局變量——限定文件使用
在掃雷的時候,我們創(chuàng)建了許多的文件,比如1個頭文件和2個.c文件,每次要在哪里用的時候只需要在,#include聲明地方即可。
在修飾全局變量的時候也是如此。
我們在上述VS中創(chuàng)建了2個.c文件,當(dāng)右邊的.c文件要用左邊的初始化變量的時候,我們需要extern聲明。
但是我們在右邊文件上加入static的時候會發(fā)現(xiàn)右邊調(diào)試的時候報錯,這是因為:
static使得全局變量的作用域變小,只能在本文件使用,在其他文件看來就相對于你沒有這個變量,這個時候用extern也沒有用了。
修飾函數(shù)——同修飾全局變量:
我們修飾函數(shù)和全局變量類似,聲明用extern聲明不同文件。在左邊函數(shù)類型前面加static也是屏蔽這個語句,讓其他文件找不到該函數(shù)。
2.#define的定義常量和宏 (1)#define定義符號這里我們用define來定義M,M就是被定義的常量,我們在后面或者把M付給a后打印a,還是直接打印M得到的結(jié)果都是100,這就是我們的define定義符號。
(2)定義宏在這段代碼中,#define ADD(x,y) (x>y?x:y)就是我們的宏。我們現(xiàn)在不需要太懂,只要知道他是宏定義就行了。
3.指針:我們現(xiàn)在先來初步了解一下指針,并不是深入探究指針。那什么是指針呢?
指針也可以被我們稱為地址,我們可以將每個指針看成我們現(xiàn)實世界中每個房間的門牌號,每個指針都有其對應(yīng)的空間。
在內(nèi)存中每個內(nèi)存單元都有自己的編號,當(dāng)我們在編譯的時候,若是要找到該內(nèi)存單元,我們可以通過編號來尋找。
那么,如何訪問一個內(nèi)存單元,內(nèi)存單元的指針又是怎么產(chǎn)生的呢?
現(xiàn)在我們的電腦分為32位電腦和64位電腦。
我們以32位電腦為例:32位電腦就有32條地址線,這個時候我們往32條地址線上通電,我們通的電只能為高電頻或者低電頻,我們將這些電信號進行轉(zhuǎn)換,轉(zhuǎn)換為數(shù)字信號就對應(yīng)了我們二進制為中的0和1。
這個時候我們32位機器上產(chǎn)生的所有2進制序列的可能性:
所以32位機器就有總共2^32次方條地址線,就可以管理2^32個地址,每個地址對應(yīng)一個內(nèi)存單元,也就是2^32次方個字節(jié)的內(nèi)存空間。(每個內(nèi)存單元占一個字節(jié))
注:內(nèi)存單元的編號,地址,指針是一個意思。
那么內(nèi)存在C語言中是怎么運用的呢?
我們向內(nèi)存申請4個字節(jié)來存儲a這個變量,每個字節(jié)都有其對應(yīng)的編號,我們他的編號是什么呢。如果一個字節(jié)的編號是2進制位的話未免有些太長了,所以在寫地址和編號的時候我們通常將它從2進制位轉(zhuǎn)換為16進制位進行說明。如下:
那我們可不可以將a的內(nèi)存拿出來呢,那是當(dāng)然可以的,我們來書寫一串代碼來表示。
這里就是我們a的內(nèi)存所在的編號,這個時候就有人要問了,不是說a占4個字節(jié)嗎,為什么取出來一個編號而已?這個時候我們調(diào)試起來。
我們就可以看見a就是占4個字節(jié),只不過是VS在取地址a的時候,通常都取出第一個編號也就是它的起始地址。所以我們在打印的時候才會看到只有一個編號而已。那為什么一個整形在內(nèi)存里面是8個數(shù)字呢,這是因為我們這里存放的是16進制,1個16進制對應(yīng)4個2進制位,8個二進制位對應(yīng)一個字節(jié),所以這里存放著4個字節(jié)的大小。
指針的存放與解引用:int main()
{
int a = 10;
int*pa = &a;//存放a的地址,a的類型是整形,所以pa的類型是int*型
*pa = 20;//解引用pa,找到a的地址對a進行修改
printf("%d\n",a);//a結(jié)果從10改為20
return 0;
}
pa是一個變量,用來存放a的地址,所以我們也可以將pa說為指針變量。
*pa是對pa進行解引用,作用是通過pa的地址找到a,同時在這里也可以對a的值進行修改。pa不會被改變,pa是指針變量的變量名。
注:pa的類型是int*,不要怕pa和*連在一起,看為int類型。
同時指針也可以用來存放char類型的指針并修改。
當(dāng)pc和ch指向同一塊空間的時候,他們的作用相同。
注:內(nèi)存中的地址會變化,比如輸入一個整形類型10,2次打印的時候10的內(nèi)存空間位置會發(fā)生變化。
指針自己也有自己一塊獨立的空間。
計算指針變量的大小:這里有人要問了,這里int大小是4可以理解,但是為什么char類型的b大小也是4呢?
這里我們要知道:指針變量是用來存放地址的,在32位機器上,它存放的是32位bit位。64位機器則是64個bit位。所以32位機器上,指針存放32bit的地址。要想指針存放得了32個bit位,則指針大小至少為32位nit位。所以在32位機器上,指針大小都為4.
結(jié)尾:到這里我們的初識C語言這個篇章就是徹底的結(jié)束了,就如同我們剛剛到來一樣懵懂,經(jīng)過了這段時間,我們也可以簡單的進行代碼的書寫和認(rèn)識了,那么到此我們?yōu)槌踝RC語言的終章畫上了圓滿的句號。希望這個系列的內(nèi)容可以為你提供一定的幫助,同時也是你從C語言中菜鳥到新手的一個轉(zhuǎn)變,期待下一個篇章再會。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧