溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C語言常見的面試題有哪些

發(fā)布時間:2021-11-22 15:39:03 來源:億速云 閱讀:129 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“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)注!

向AI問一下細(xì)節(jié)

免責(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)容。

AI