您好,登錄后才能下訂單哦!
這篇文章主要講解了“C語言常見的面試題有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C語言常見的面試題有哪些”吧!
第1題:c語言有哪些核心的特征?
可移植性很強。
模塊化能力很強。
靈活性很高。
加載速度和執(zhí)行速度都很好。
可擴展性很強。
第2題:c語言中有哪些基本的數(shù)據(jù)類型?
Int整型。
Float浮點型。
Double雙浮點型。
Char單個字符。
void特殊類型,不包含任何值。
第3題:解釋一下語義錯誤。
在寫程序的時候會有很多語義錯誤,比如說,拼錯了命令,一個函數(shù)的參數(shù)個數(shù)錯了, 數(shù)據(jù)類型不匹配,等等。
第4題:C語言中如何使用增加和減少語句?
有兩種方式:
++, --
或者
傳統(tǒng)的加和減。
第5題:什么是一個編程語言的保留字?
保留字是指語言庫中使用的一些關(guān)鍵字。這些關(guān)鍵字不能用來做其他的事情,比如說定義一個變量或者函數(shù)等等。
第6題:解釋一下dangling pointer。
首先我們說有一個指針指向一個變量的內(nèi)存地址。一段時間以后這個變量被從內(nèi)存地址的位置刪除了。
這樣的指針稱之為dangling pointer.
第7題:描述一下靜態(tài)函數(shù)的用途。
使用靜態(tài)static關(guān)鍵字定義的函數(shù)稱之為靜態(tài)函數(shù)。
這樣的函數(shù)需要在相同的代碼里調(diào)用。
第8題:abs和fabs的區(qū)別是什么?
這兩個函數(shù)都是用來取絕對值的。前者是針對整型的。后者是針對浮點型的。前者位于標(biāo)準(zhǔn)庫stdlib.h里面。后者在math.h里面。
第9題:說一下wild pointers。
未初始化的指針稱之為wild pointers。這些指針指向一個隨意的內(nèi)存地址。如果訪問它們可能會導(dǎo)致很壞的程序行為,甚至導(dǎo)致程序崩潰。
第10題:++a和a++的區(qū)別是什么?
加加a的意思是先加后取值。
A加加的意思是先取值后增加。
第11題:單等號和雙等號的區(qū)別是什么?
單等號表示賦值運算符。
雙等號是等于條件判斷運算符。
第12題:解釋一下c語言的原型函數(shù)。
原型函數(shù)是對一個函數(shù)的聲明。
它包含函數(shù)名,返回值和參數(shù)類型列表。
int sum(int,int)
第13題:解釋一下數(shù)據(jù)類型的cyclic nature。
在c語言中,當(dāng)一個程序員給一個數(shù)據(jù)類型的變量賦值的時候,有可能會溢出。這種溢出不會產(chǎn)生編譯錯誤。最終的賦值結(jié)果會根據(jù)數(shù)據(jù)類型溢出后的剩余而定。
這種行為稱為cyclic nature. Char, int, long int數(shù)據(jù)類型有這個特性。Further float, double和long double數(shù)據(jù)類型沒有這個特性。
第14題:說一下c語言的頭文件和用途。
頭文件存放了原型函數(shù)的定義。這個文件又稱為庫文件。
比如說printf和scanf存放在stdio.h里面。
第15題:解釋一下在調(diào)試過程中對代碼進行注釋的做法。
這個做法稱為commenting out。通過把一些代碼屏蔽掉來判斷或排除是否是這些代碼造成的錯誤。
第16題:說一下c語言中循環(huán)的類型。
C語言中有4種循環(huán)類型。
while
for
do while
nested loop
第17題:什么是nested loop?
一個循環(huán)包含在另一個循環(huán)中稱為nested loop。第1個循環(huán)成為外循環(huán)。里面的循環(huán)稱為內(nèi)循環(huán)。內(nèi)循環(huán)執(zhí)行的次數(shù)作為總循環(huán)的次數(shù)。
第18題:c語言中函數(shù)的通常格式是怎樣的?
C語言的函數(shù),包含4個部分。
返回值, 函數(shù)名, 參數(shù), 函數(shù)體。
第19題:什么是指針的指針?
指針的指針是指一個指向指針?biāo)诘刂返闹羔槨?/p>
int a=5, *x=&a, **y=&x;
第20題:Break關(guān)鍵字在哪個地方使用?
Break可以用在循環(huán)中和switch語句當(dāng)中。是用來終止當(dāng)前的循環(huán)或跳出switch。
第21題:使用頭文件時雙引號和尖括號的區(qū)別是什么?
使用雙引號時,首先要在當(dāng)前工作目錄中查找這個頭文件,如果找不到的話就會在內(nèi)置的include path里面找。
使用尖括號時,只會在當(dāng)前工作目錄中查找這個頭文件。
第22題:什么是sequential訪問文件?
這種文件用來存儲數(shù)據(jù),在寫數(shù)據(jù)的時候會按照按照一個序列模式。在讀取的時候也是按照這個模式往外讀取。
第23題:如何向棧數(shù)據(jù)結(jié)構(gòu)里面存儲數(shù)據(jù)?
這樣的數(shù)據(jù)是先進后出的。只有頂部的數(shù)據(jù)才可以被訪問到。存儲的時候使用push,獲取的時候使用pop。
第24題:C程序算法的意義是什么?
算法的意義在于提高程序的執(zhí)行效率,是注重空間的節(jié)省,還是注重時間的節(jié)省,是寫算法時需要考慮的因素。
第25題:volatile關(guān)鍵字的作用?
volatile指定的關(guān)鍵字可能被系統(tǒng)、硬件、進程/線程改變,強制編譯器每次從內(nèi)存中取得該變量的值,而不是從被優(yōu)化后的寄存器中讀取。
第26題:如下條件判斷運算符哪個在c語言里不可用?
==, <>, <=, >=
答案是<>。
第27題:在c語言中可不可以用大括號包含一行代碼?
是的, 當(dāng)然可以。很多程序員使用大括號來規(guī)范代碼結(jié)構(gòu),不管是一行還是多行。
第28題:描述一下modifier。
Modifier是數(shù)據(jù)類型的前置,用來標(biāo)識存儲空間的大小。
比如說在32位處理器系統(tǒng)中, 整形的長度為4bits。
如果我們加了如下的modifier:
Long Int 就可以存8 bits。
Short Int 占 2 bits。
第29題:在c語言中有哪些modifiers?
Short
Long
Signed
Unsigned
long long
第30題:在c語言中如何產(chǎn)生隨機數(shù)?
rand 函數(shù)就是用來產(chǎn)生隨機數(shù)的,它可以產(chǎn)生任意從0開始的整數(shù)。
第31題:能不能在整型中存放32768這個數(shù)?
整數(shù)類型可以存放從-32768~32767之間的任何數(shù)值。但是32768不在這個范圍之內(nèi)。這個時候modifier是我們需要的東西。Long Int數(shù)據(jù)類型就可以存放這個數(shù)。
第32題:在c語言中可以自定義頭文件嗎?
是的, 當(dāng)然可以, 定義完頭文件以后可以存放函數(shù)的原型。
使用的時候, 用include來包含這個文件的名字。
第33題:解釋一下c語言中的動態(tài)數(shù)據(jù)結(jié)構(gòu)。
動態(tài)數(shù)據(jù)結(jié)構(gòu)在訪問內(nèi)存方面非常高效。內(nèi)存的訪問,要因程序的需求而定。
第34題:什么是indirection?
如果你定一個指針變量, 它指向一個值變量或者一個內(nèi)存對象。在這種情況下,對這個值變量和對象來說沒有一個直接的引用。這種情況就是indirection.
但是如果我們聲明一個變量,它對值來說就是一個直接的引用。
第35題:在c語言中,什么時候會用到空指針?
有三種情況,在c語言中會用到空指針。
作為一個錯誤值。
作為一個監(jiān)測值。
在一個遞歸數(shù)據(jù)結(jié)構(gòu)中終止indirection。
第36題:解釋一下模塊化編程。
把主程序分成多個小的,可執(zhí)行的模塊稱為模塊化編程。這個概念是為了增強重用性。同時也提高了程序的可維護性。
第37題:Call by value和call by reference有什么區(qū)別?
call by value傳的是值。Call by reference傳的是地址。
第38題:如何在c語言中定義一個字符串變量?
使用char定義一個字符數(shù)組。
第39題:在函數(shù)定義的時候何時用void?
當(dāng)函數(shù)沒有返回值時,可以用void。
第40題:什么是preprocessor directives?
Preprocessor directives一般放在程序的開頭。主要是用來指定調(diào)用庫文件的。還有一個用途是用來定義一些常值變量,宏定義等等。#開頭。
第41題:這樣賦值對不對?錯在哪里?
myName="test";
不對。
我們不能用等號給一個字符串賦值。需要使用strcpy。
第42題:為什么c語言被認(rèn)為是中級語言?
這是因為c語言既能像高級語言那樣編寫程序,又可以像低級語言如匯編那樣直接操作硬件。
第43題:什么是鏈表?
鏈表是一系列的元素連接在一起形成的數(shù)據(jù)結(jié)構(gòu)。在c語言中,鏈表是用指針來構(gòu)建的。使用鏈表數(shù)據(jù)結(jié)構(gòu)是使用內(nèi)存操作比較的一種方式。
第44題:什么是fifo?
First in first out. 隊列是典型的first in first out,數(shù)據(jù)結(jié)構(gòu)。
第45題:什么是二叉樹?
二叉樹是鏈表的延伸。它的每一個節(jié)點都有兩個指針,一個指向左,一個指向右。
第46題:C語言中有些保留著是大寫的對嗎?
不對,c語言中的所有保留字必須是小寫,否則的話c的編譯器會報錯。
第47題:什么是輸出重定向?
輸出重定向是指把程序的輸出,除了輸出在屏幕上以外的另外選擇, 比如說,輸出到一個文件里。
第48題:什么是全局變量,如何定義它們?
全局變量是指在程序中任何地方都可以訪問到的變量。它一般定義在preprocessor directives的后面。
第49題:getch和getche, 這兩個函數(shù)的區(qū)別是什么?
前者是把用戶的輸入分配給一個變量。
后者是把用戶的輸入打印到屏幕上,同時分配給一個變量。
第50題:文本文件和二進制文件的區(qū)別是什么?
文本文件存放的是人類可以閱讀的內(nèi)容,它包含字母數(shù)字和其他的字符。
而二進制文件存放的是1和0,只有電腦才能夠讀懂。
第51題:如何用隨機訪問的方法在一個數(shù)據(jù)文件中搜索數(shù)據(jù)?
fseek
在文件打開以后提供三個參數(shù)給這個函數(shù)。一個是文件的指針,一個是要搜索的字節(jié)數(shù),再一個是文件中的搜索起點。
第52題:在c語言中有沒有內(nèi)置的排序函數(shù)?
qsort
第53題:heap的優(yōu)點和缺點是什么?
在heap上存放數(shù)據(jù),要比在stack上存放數(shù)據(jù)要慢。
但是使用heap的主要優(yōu)勢是靈活性。這是因為內(nèi)存的訪問, 分配以及刪除可以按照任意順序來執(zhí)行。
通過好的算法和設(shè)計可以規(guī)避heap速度慢的問題。
第54題:如何把字符串變成數(shù)字?
atoi
atof
使用c語言里面的內(nèi)置函數(shù)可以做到。你也可以自己寫函數(shù)。
感謝各位的閱讀,以上就是“C語言常見的面試題有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C語言常見的面試題有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。