C語言經典面試題 (持續更新)

2021-08-11 10:23:36 字數 1048 閱讀 2325

注:整理所有問題均來自換聯網,個人覺得不錯,可以反覆思考,回過頭來多看幾遍,無論對於面試還是思維提公升都有極大的幫助。

1.gets()函式

問:請找出下面**裡的問題:

#includeint main(void) 

2.請找出下面**中的所有錯誤 (題目不錯,值得一看)  

說明:以下**是把乙個字串倒序,如「abcd」倒序後變為「dcba」

#include"string.h"   

main()   

答:

方法1:一共有4個錯誤;

int main()   

方法2: (方法一需要額外的儲存空間,效率不高.) 不錯的想法

#include #include main()

;int *ptr=(int *)(&a+1);

printf("%d,%d",(a+1),(ptr-1));

輸出:2,5

(a+1)就是a[1],(ptr-1)就是a[4],執行結果是2,5

&a+1不是首位址+1,系統會認為加乙個a陣列的偏移,是偏移了乙個陣列的大小(本例是5個int)

int *ptr=(int *)(&a+1);

則ptr實際是&(a[5]),也就是a+5

原因如下:

&a是陣列指標,其型別為 int (*)[5];

而指標加1要根據指標型別加上一定的值,

不同型別的指標+1之後增加的大小不同

a是長度為5的int陣列指標,所以要加 5*sizeof(int)

所以ptr實際是a[5]

但是prt與(&a+1)型別是不一樣的(這點很重要)

所以prt-1只會減去sizeof(int*)

11.引用:平級內解決交換問題,不開闢多餘空間

void swap(char* &p,char *& q)

int main()

c 面試面試題 持續更新中。。。

1 下面輸出什麼?public class a public class b a class program 解答 首先4.0 是編譯不過,缺少隱式轉換,這種操作本來就是錯誤的 執行時5.0丟擲異常,無法將a轉換成b 1.0 print a 2.0 print b,3.0 print b 2 將乙個...

C 面試題整理 持續更新

1.自己實現memcpy void mymemcopy void dest,const void src,size t count 2.兩個有序鍊錶合成乙個有序鍊錶 遞迴演算法 nodeptr merge lists nodeptr one head,nodeptr two head else re...

C 面試題彙總 持續更新

1.c與c 的區別?c是面向過程,c 物件導向,c是c 的乙個子集,c 還有繼承多型分裝等特性 2.c 11的新特性?c 14?c 17 c 11 auto關鍵字,nullptr,for新用法 for auto a b 智慧型指標,匿名函式 lambda 等 c 14 auto關鍵字擴充套件,泛型l...