12個有趣的C語言面試題

2021-06-09 06:55:36 字數 823 閱讀 1460

1) 輸入字串 要用 fets()代替gets(), 因為gets沒有對字串長度進行檢查,容易溢位.

2) 拷貝未知長度的字串, 也要用strncpy()代替strcpy(),理由同上

3) main函式的返回型別為int, 這點非常重要,特別當程式是作為依賴於程式成功執行的指令碼的一部分執行時

4)main函式結束時,沒有free,程式退出,系統會自動free這個程式分配的所有記憶體,但是,如果**處於乙個迴圈中,就會導致嚴重的記憶體洩漏.

5) 要free乙個指標, 指標變數的指向就不能隨便更改. p++後,再free(p),就會出錯

6) #include int atexit( void (*func)(void) );

可以實現,多重呼叫. 但是需要與return 或者 exit配合使用, _exit()會使其無效.

7) void*可以接受任何型別的指標

8) char* k = *ptr++; 則先執先 k = ptr, 再執行 ptr++;

9) char* ptr = "linux"; 這段**定義的字串是常量字串,如果用*ptr = 't',就會出現seg-fault或者崩潰.

下面的程式確實會出錯:

10) 會改變自己名字的程序, 就是改變main()函式的引數,argv[0];

11)不能返回區域性變數的位址

12) printf計算引數變數值,是從右向左計算

12個有趣面試題(C語言)

1.gets 函式 includeint main int argc,char argv 答 上面 裡的問題在於函式gets 的使用,這個函式從stdin接收乙個字串而不檢查它所複製的快取的容積,這可能會導致快取溢位。這裡推薦使用標準函式fgets 代替。修改 gets buff 替換 fgets ...

12個有趣的C語言面試題

摘要 12個c語言面試題,涉及指標 程序 運算 結構體 函式 記憶體,看看你能做出幾個!1.gets 函式 問 請找出下面 裡的問題 include int main void 2.strcpy 函式 問 下面是乙個簡單的密碼保護功能,你能在不知道密碼的情況下將其破解嗎?include int ma...

12個有趣的C語言面試題

發表於 09 06 09 15 csdn 王然面試題c 摘要 12個c語言面試題,涉及指標 程序 運算 結構體 函式 記憶體,看看你能做出幾個!1.gets 函式 問 請找出下面 裡的問題 include int main void 2.strcpy 函式 問 下面是乙個簡單的密碼保護功能,你能在不...