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 函式 問 下面是乙個簡單的密碼保護功能,你能在不...