C/C++編程筆記: C語言編程面試常見問題,全是經(jīng)典題!

話不多說,直接上面試題!如果有剛剛學習編程的小伙伴也可以看一下,都是當時大學應該學懂的,但是因為我以前沒有好好聽課,有些也沒有注意到,現(xiàn)在也是提醒大家吧~

C語言的主要特征是什么?
C是一種過程語言。C語言的主要功能包括對內(nèi)存的低級訪問,簡單的關鍵字集和簡潔的樣式。這些功能使其適用于諸如操作系統(tǒng)或編譯器開發(fā)之類的系統(tǒng)編程。?
i ++和++ i有什么區(qū)別?
1)表達式“ i ++”返回舊值,然后遞增i。表達式++ i遞增該值并返回新值。?
2)后綴++的優(yōu)先級高于前綴++。?
3)后綴++的關聯(lián)性從左到右,前綴++的關聯(lián)性從右到左。?
4)在C ++中,++ i可用作左值,但i ++不能用作左值。在C中,它們都不能用作l值。?
什么是l值?
l值或位置值是指可以在賦值運算符左側(cè)使用的表達式。例如,在表達式“ a = 3”中,a是l值,而3是r值。?
l值有兩種類型:?
“不可修改的l值”表示無法修改的l值。const變量是“不可修改的l值”。?
“可修改的l值”表示可以修改的l值。
數(shù)組和指針有什么區(qū)別?
指針用于存儲動態(tài)分配的數(shù)組的地址,以及用于作為參數(shù)傳遞給函數(shù)的數(shù)組。在其他情況下,數(shù)組和指針是兩個不同的東西,盡管數(shù)組和指針是不同的東西,但是數(shù)組的以下屬性使它們看起來相似。
如何編寫自己的sizeof運算符?

類型就像是宏的局部變量。&type給出程序中聲明的變量(double x)的地址,將其遞增1表示可以存儲下一個類型x變量的地址(此處addr_of(x)+ 8,因為double的大小為8B )。
差異得出的結(jié)果是,可以在該內(nèi)存量中存儲多少x類型的變量,對于x類型,顯然這將是1(將其遞增1并取不同就是我們所做的)。將其類型轉(zhuǎn)換為char *并求出差值將告訴我們在給定的內(nèi)存空間中可以存儲多少個char類型的變量(差值)。由于每個字符僅需要1B的內(nèi)存,因此(內(nèi)存量)/ 1將給出傳遞給宏的變量類型的兩個連續(xù)的內(nèi)存位置之間的字節(jié)數(shù),從而得出該變量的內(nèi)存量。 x要求。
但是您將無法將任何文字傳遞給此宏并知道它們的大小。
您也可以使用函數(shù)而不是宏來實現(xiàn),但是函數(shù)實現(xiàn)無法在C中完成,因為C不支持函數(shù)重載,并且sizeof()應該接收所有數(shù)據(jù)類型的參數(shù)。
注意,以上實現(xiàn)假定字符的大小為一個字節(jié)。
如何在不使用循環(huán)的情況下打印1到100之間的數(shù)字??
為此,我們可以使用遞歸。

什么是volatile關鍵字??
volatile關鍵字旨在防止編譯器對可能以編譯器無法確定的方式更改的對象進行任何優(yōu)化。?
聲明為volatile的對象從優(yōu)化中被省略,因為它們的值可以隨時通過當前代碼范圍之外的代碼進行更改。
變量可以同時是const和volatile嗎??
是的,const表示無法為變量分配新值。該值可以由其他代碼或指針更改。例如,以下程序可以正常運行。

本次分享就到這里了,希望對大家有幫助!哦對了,其實這篇文章和筆者前天分享的面試題分享可以一起看哦!
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!

另外,UP在主頁上傳了一些學習C/C++編程的視頻教程,有興趣或者正在學習的小伙伴一定要去看一看哦!會對你有幫助的~
分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎入門教程)
歡迎轉(zhuǎn)行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
