C 基礎經典面試題

2021-06-18 06:08:34 字數 1745 閱讀 4589

1.

請問以下**有什麼問題:

int main()

沒有為str分配記憶體空間,將會發生異常

問題出在將乙個字串 複製進乙個字元變數指標所指位址。雖然可以正確輸出結果,但因為越界進行記憶體讀寫而導致程式崩潰。

char* s="aaa";

printf("%s",s);

s[0]='b';

printf("%s",s);

有 什麼錯?

"aaa"是字串常量。s是指標,指向這個字串常量,所以宣告s的 時候就有問題。

cosnt char* s="aaa";

然後又因為是常量,所以對是s[0]的 賦值操作是不合法的。

1、寫乙個「標準」巨集,這個巨集輸入兩個 引數並返回較小的乙個。

#define min(x, y) ((x)>(y)?(y):(x))//結尾沒 有;

2、嵌入式系統中經常要用到無限迴圈,你怎麼用c編寫死迴圈。

while(1){}或 者for(;;)

3、關鍵字static的作用是什麼?

定 義靜態變數

4、關鍵字const有什麼含意?

表示 常量不可以修改的變數。

5、關鍵字volatile有什麼含意?並舉出三個不同的例子?

提示編譯器物件的值可能在編譯器未監測到的情況下改變。

int (*s[10])(int) 表示的是什麼啊

int (*s[10])(int) 函式指標陣列,每 個指標指向乙個int func(int param)的函式。

1.有 以下表示式:

int a=248; b=4;int const c=21;const int *d=&a;

int *const e=&b;int const *f const =&a;

請問下列表示式哪些會被編譯器禁 止?為什麼?

*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;

*c 這 是個什麼東東,禁止

*d 說了是const, 禁止

e = &a 說了是const 禁止

const *f const =&a; 禁止

2.交換兩個變數的值,不使用第三個變數。即a=3,b=5,交換 之後a=5,b=3;

有兩種解法, 一種用算術演算法, 一種 用^(異或)

a = a + b;

b = a - b;

a = a - b;

or a = a^b;// 只能對int,char..

b = a^b;

a = a^b;

or a ^= b ^= a;

3.c和c++中的struct有什 麼不同?

c和c++中struct的主要區別是c中 的struct不可以含有成員函式,而c++中的struct可以。c++中struct和class的 主要區別在於預設的訪問許可權不同,struct預設為public,而class默 認為private

4.#include

#include

void getmemory(char *p)

int main( )

程式崩潰(並沒有崩潰),getmemory中的malloc 不 能返回動態記憶體, free()對str操作很危險

5.char szstr[10];

strcpy(szstr,"0123456789");

產生什麼結果?為什麼?

長 度不一樣,會造成非法的os

c 經典面試題

1 標頭檔案中的 ifndef define endif 幹什麼用?答 防止該標頭檔案被重複引用。2 include 和 include filename.h 有什麼區別?答 對於 include 編譯器從標準庫路徑開始搜尋 filename.h 對於 include filename.h 編譯器從...

C 經典面試題

1.輸入乙個字串,將其逆序後輸出。使用c 不建議用偽碼 include using namespace std void main a p malloc 1024 應該寫成 p char malloc 1024 沒有釋放p的空間,造成記憶體洩漏。8.下面的 有什麼問題?並請給出正確的寫法。void ...

C 經典面試題

c 知識總結目錄索引 二 哪些函式不能宣告成虛函式 三 為什麼析構函式和建構函式內不能呼叫虛函式 四 為什麼析構函式最好宣告成虛函式 五 實現乙個不能被繼承的類 六 實現乙個類定義出來的物件都在堆上面 七 實現乙個類定義出來的物件都在棧上面 八 實現乙個類,定義出的物件不能在堆上 九 用c語言實現繼...