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