詳解C語言初階基礎(chǔ)
1.什么是c語言
c語言是一門通用計(jì)算機(jī)編程語言,是一種面向?qū)ο蟮木幾g型語言,廣泛用于底層開發(fā)。其設(shè)計(jì)目的是提供一種能以簡易的方式編譯、處理低級存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何環(huán)境便能運(yùn)行的編程語言.
c語言的實(shí)質(zhì)就是生成一個(gè)可執(zhí)行的exe文件
2.初始化:
開辟一個(gè)空間時(shí)同時(shí)放進(jìn)去某個(gè)內(nèi)容,叫做初始化(伴隨空間開辟時(shí)就有的值,如同一出生就有的性別),初始化賦值的變量是可以更改的,叫做賦值(實(shí)質(zhì)是對原值的覆蓋,比如后期做手術(shù)轉(zhuǎn)換性別)。
3.變量和常量
在我們的生活中,有變量和常量。
身高、變化的量體重、頭發(fā)個(gè)數(shù)、錢包內(nèi)錢數(shù)量、年齡這些就叫作變量,是可以更改的量。
身份證號、手機(jī)號、性別、種族、(啊,一般情況下都是不會(huì)變的) 我們把它們叫做常量,是不可更改的量
臨時(shí)變量與全局變量
變量又分為臨時(shí)變量(也叫局部變量或自動(dòng)變量)和全局變量
放在函數(shù)塊內(nèi)部的叫做臨時(shí)變量,而函數(shù)塊之外的叫做全局變量
局部變量只能在本函數(shù)內(nèi)部使用,而不能在其他函數(shù)塊中使用
變量的使用采用就近原則(即局部變量優(yōu)先于全局變量),既然局部變量優(yōu)先,那么就沒必要在同名時(shí)仍然定義局部變量(這樣的定義我們并不推薦)
4.作用域與生命周期
簡單闡述:
作用域:
局部變量的作用域就是變量所在的局部范圍
全局變量的作用域就是整個(gè)工程
生命周期(存在與消失):
局部變量:進(jìn)入作用于生命周期開始,出作用與生命周期結(jié)束
全局變量:整個(gè)程序的生命周期
作用域與生命周期的區(qū)別
作用域:
實(shí)質(zhì)是影響范圍,例如有一個(gè)叫小吳的人(一個(gè)城市人們都知道的明星),只有城市中的人知道小吳,農(nóng)村的人不知道,所以小吳的作用域就是城市。
當(dāng)超出作用域后,變量就不可以被訪問
實(shí)質(zhì)上作用域是代碼塊范圍的定義和使用(如函數(shù)代碼塊,注意函數(shù)內(nèi)部也可能有代碼塊,比如for、while、switch、do-while、if等語句塊中)
生命周期:
實(shí)質(zhì)是變量的存在與銷毀,小吳從出生,到死亡90歲,這90年就是他的生命周期。
5. 為什么c中存在了各種數(shù)據(jù)類型:
這里補(bǔ)充一下sizeof,sizeof是用來求所占內(nèi)存大小的一個(gè)操作符(初學(xué)者不必深究),單位是字節(jié)
計(jì)算機(jī)的發(fā)明本質(zhì)是為了解決人的問題的
人:有臨時(shí)數(shù)據(jù)和全局?jǐn)?shù)據(jù),而數(shù)據(jù)本身是需要被存儲(chǔ)的,數(shù)據(jù)本身有大小,要占據(jù)空間。
c語言為了能夠記錄數(shù)據(jù),保存數(shù)據(jù),所以就有了數(shù)據(jù)類型
而且要有不同大小的類型。
不是數(shù)據(jù)類型用來存儲(chǔ)數(shù)據(jù),而是用數(shù)據(jù)類型來進(jìn)行對變量的定義,而數(shù)據(jù)是存儲(chǔ)在變量中的,用來定義變量大小的模板叫作數(shù)據(jù)類型。
所謂的數(shù)據(jù)類型就是變量不同的模板,用來生成不同大小的變量
如同月餅?zāi)>卟⒉坏扔谠嘛?,只是月餅的模板,決定了月餅的大小(不同的模板可以做出不同大小的月餅,而吃的是月餅,不是月餅?zāi)0澹?/p>
如Sizeof(1)=
sizeof(int),因此模具和用這個(gè)模具做出的月餅大小實(shí)質(zhì)是相同的。
6.常量:
·字面常量(一般不使用)
如10,‘b',”hello world” 不用定義變量類型和變量名(不報(bào)錯(cuò)),但不能直接使用(意思就是每次都要寫原值,不方便,沒必要)
不能對字面常量進(jìn)行修改
宏定義(define)
#define M 100
(不寫類型、不寫分號)
const常量
const int a=10
;(只加一個(gè)后綴 const),只能初始化而不能賦值
枚舉常量(enum),枚舉在函數(shù)之外(不做深究)
7.c語言的字符串:
字符(單引號,大小一個(gè)字節(jié))與字符串(雙引號,大小4個(gè)字節(jié));
字符串默認(rèn)以'\0'結(jié)尾,即使我們自己沒有添加(大部分情況)
雙引號內(nèi)部是字符串字面值,結(jié)束標(biāo)志是一個(gè)默認(rèn)的\0轉(zhuǎn)義字符,字符串內(nèi)容不包括結(jié)束標(biāo)志
c語言中有字符串,但是沒有字符串類型,沒辦法直接定義字符串類型,但有保存字符串的方法:字符數(shù)組或者字符指針(初學(xué)者此處不必細(xì)究)
這里補(bǔ)充一下strlen,strlen是用來求字符串的函數(shù),頭文件是stdlib.h,strlen遇到'\0'后停止,且不包括'\0'
8.轉(zhuǎn)義字符(\)
字面轉(zhuǎn)特殊,特殊轉(zhuǎn)字面
轉(zhuǎn)義: 特殊轉(zhuǎn)字面(‘ ->\ '),字面轉(zhuǎn)特殊(n ->\n)
注意:
i
: 每個(gè)轉(zhuǎn)義字符都是一個(gè)字節(jié),如'\t' , ‘\xhh'
II
: c語言中不能直接輸出一個(gè)單引號,單引號是字符的界定符(本身有特殊含義),但用' \' '可以轉(zhuǎn)義后進(jìn)行輸出,即特殊轉(zhuǎn)普通,輸出單引號,類似的還有 斜杠'\' , 雙引號 ‘ ” ' 等
III
: 轉(zhuǎn)義的是普通字符,且沒有特殊含義時(shí),原樣輸出如'\c'='c'
IV
: \125 轉(zhuǎn)義為八進(jìn)制數(shù)對應(yīng)十進(jìn)制的askll碼值
\128 只轉(zhuǎn)義八進(jìn)制數(shù)12對應(yīng)十進(jìn)制的askll值,8照常輸出
V
:當(dāng)光標(biāo)回退時(shí),會(huì)將路徑上的原有數(shù)據(jù)進(jìn)行刪除,如'\b', '\r',
這里補(bǔ)充一個(gè)知識(shí)點(diǎn):回車和換行
換行:更換到下一行,而不管位置
回車:回到該行的開始
因此我們通常所說的回車實(shí)際上是先換行再回車
因此鍵盤上enter標(biāo)志通常是 往下走再往左走的箭頭
而在c語言中直接使用'\n'就是回車+換行的意思
但'\r'就是單純的回車,回到開頭,光標(biāo)倒退,施行刪除功能,將原值刪除,光標(biāo)回退,可以用來做計(jì)時(shí)(如下圖中輸出結(jié)果會(huì)從9漸變到0,此處初學(xué)者不必深究)
9.注釋:
快捷鍵
注釋:ctrl+c后ctrl+k
; 取消注釋:ctrl+c后ctrl+
c語言注釋分為兩種,c(/**/)和c++(//)風(fēng)格
注釋時(shí)選到頭部 默認(rèn)為c++風(fēng)格
注釋時(shí)未全選 風(fēng)格為c
我們推薦使用c++風(fēng)格注釋,因?yàn)閏風(fēng)格注釋不支持嵌套,如:
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++中的不規(guī)則二維數(shù)組實(shí)現(xiàn)代碼
本文介紹了一個(gè)在C++中保存不定長二維數(shù)組的數(shù)據(jù)結(jié)構(gòu),在這個(gè)結(jié)構(gòu)中,我們使用了一個(gè)含有指針和數(shù)組長度的結(jié)構(gòu)體,用這樣的一個(gè)結(jié)構(gòu)體構(gòu)造一個(gè)結(jié)構(gòu)體數(shù)組,用于存儲(chǔ)每一個(gè)不定長的數(shù)組,感興趣的朋友一起看看吧2024-03-03C/C++ break和continue區(qū)別及使用方法
這篇文章主要介紹了C/C++ break和continue區(qū)別及使用方法的相關(guān)資料,需要的朋友可以參考下2017-07-07C語言數(shù)據(jù)結(jié)構(gòu)之使用鏈表模擬棧的實(shí)例
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之使用鏈表模擬棧的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-08-08DSP中浮點(diǎn)轉(zhuǎn)定點(diǎn)運(yùn)算--定點(diǎn)數(shù)的加減乘除運(yùn)算
本文主要介紹DSP中定點(diǎn)數(shù)的加減乘除運(yùn)算,很值得學(xué)習(xí)一下,需要的朋友可以參考一下。2016-06-06Qt數(shù)據(jù)庫相關(guān)應(yīng)用開發(fā)總結(jié)
這篇文章主要為大家介紹了在Qt數(shù)據(jù)庫應(yīng)用開發(fā)中的一些經(jīng)驗(yàn)總結(jié),以及一些組件的使用介紹。文中的示例代碼講解詳細(xì),需要的可以參考一下2022-02-02C++?JSON庫?nlohmann::basic_json::array?的用法示例詳解
nlohmann::json是一個(gè)C++的JSON庫,它提供了一種容易和直觀的方法來處理JSON數(shù)據(jù),nlohmann::json::array()是用來創(chuàng)建一個(gè)JSON數(shù)組的方法,這篇文章主要介紹了C++ JSON庫nlohmann::basic_json::array的用法,需要的朋友可以參考下2023-06-06淺談Windows系統(tǒng)下C語言編程中Glib庫的使用
這篇文章主要介紹了Windows系統(tǒng)下C語言編程中Glib庫的使用,Glib庫在多線程編程中經(jīng)常可以用到,需要的朋友可以參考下2016-02-02