iOS面試題-C部分

1.static關(guān)鍵字的作用藤为?

1)第一個作用:隱藏换帜。當(dāng)我們同時編譯多個文件時腊敲,所有未加static前綴的全局變量和函數(shù)都具有全局可見性叹括。

2)static的第二個作用是保持變量內(nèi)容的持久瀑晒。存儲在靜態(tài)數(shù)據(jù)區(qū)的變量會在程序剛開始運行時就完成初始化绍坝,也是唯一的一次初始化。共有兩種變量存儲在靜態(tài)存儲區(qū):全局變量和static變量苔悦,只不過和全局變量比起來轩褐,static可以控制變量的可見范圍,說到底static還是用來隱藏的玖详。

3)static的第三個作用是默認初始化為0把介。其實全局變量也具備這一屬性勤讽,因為全局變量也存儲在靜態(tài)數(shù)據(jù)區(qū)。在靜態(tài)數(shù)據(jù)區(qū)拗踢,內(nèi)存中所有的字節(jié)默認值都是0x00脚牍,某些時候這一特點可以減少程序員的工作量。

2.線程與進程的區(qū)別和聯(lián)系巢墅?

一個進程可以有一個或者多個線程組成,

進程和程序并不是一一對應(yīng)的诸狭,一個程序執(zhí)行在不同的數(shù)據(jù)集上就成為不同的進程,可以用進程控制塊來唯一地標(biāo)識每個進程君纫。而這一點正是程序無法做到的驯遇,由于程序沒有和數(shù)據(jù)產(chǎn)生直接的聯(lián)系,既使是執(zhí)行不同的數(shù)據(jù)的程序蓄髓,他們的指令的集合依然是一樣的叉庐,所以無法唯一地標(biāo)識出這些運行于不同數(shù)據(jù)集上的程序。一般來說双吆,一個進程肯定有一個與之對應(yīng)的程序眨唬,而且只有一個。而一個程序有可能沒有與之對應(yīng)的進程(因為它沒有執(zhí)行),也有可能有多個進程與之對應(yīng)(運行在幾個不同的數(shù)據(jù)集上)好乐。

3.堆和棧的區(qū)別匾竿?

1)、棧區(qū)(stack)―由編譯器自動分配釋放蔚万,存放函數(shù)的參數(shù)值岭妖,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧反璃。

2)昵慌、堆區(qū)(heap)―一般由程序員分配釋放,若程序員不釋放淮蜈,程序結(jié)束時可能由OS回收斋攀。

4.C語言如何判斷兩個單向無環(huán)鏈表是否相交?

只需判斷兩個鏈表的尾節(jié)點地址是否相同梧田,相同則相交淳蔼,不同則不相交

5.程序在內(nèi)存中運行時,內(nèi)存分幾個區(qū)裁眯,各自用途鹉梨?

1)棧--有編譯器自動分配釋放2.--一般由程序員分配釋放,若程序員不釋放穿稳,程序結(jié)束時可能由OS回收3.全局區(qū)(靜態(tài)區(qū))--全局變量和靜態(tài)變量的存儲是放在一塊

的存皂,初始化的全局變量和靜態(tài)變量在一塊區(qū)域,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域逢艘。程序結(jié)束釋放旦袋。4.另外還有一個專門放常量的地方骤菠。程序結(jié)束釋放。

6.引用與指針有什么區(qū)別

指針指向一塊內(nèi)存猜憎,它的內(nèi)容是所指內(nèi)存的地址娩怎;引用是某塊內(nèi)存的別名

1.指針是一個實體,而引用僅是個別名胰柑;

2.引用使用時無需解引用(*)截亦,指針需要解引用;

3.引用只能在定義時被初始化一次柬讨,之后不可變崩瓤;指針可變;

4.引用沒有const踩官,指針有const却桶;

5.引用不能為空,指針可以為空蔗牡;

6.“sizeof引用”得到的是所指向的變量(對象)的大小颖系,而“sizeof指針”得到的是指針本身(所指向的變量或?qū)ο蟮牡刂?的大小辩越;

7.指針和引用的自增(++)運算意義不一樣嘁扼;

8.從內(nèi)存分配上看:程序為指針變量分配內(nèi)存區(qū)域,而引用不需要分配內(nèi)存區(qū)域黔攒。

7.

編程:

1.請問運行完Test函數(shù)后趁啸,會有什么樣的結(jié)果。

(1)

void GetMemory(char *p)

{

p = (char *)malloc(100);

}

void Test(void)

{

char *str = NULL;

GetMemory(str);

strcpy(str, "hello world");

printf(str);

}

請問運行Test函數(shù)會有什么樣的結(jié)果督惰?

答:程序崩潰不傅。

因為GetMemory并不能傳遞動態(tài)內(nèi)存,

Test函數(shù)中的str一直都是NULL赏胚。

strcpy(str, "hello world");將使程序崩潰访娶。

(2)

char *GetMemory(void)

{

char p[] = "hello world";

return p;

}

void Test(void)

{

char *str = NULL;

str = GetMemory();

printf(str);

}

請問運行Test函數(shù)會有什么樣的結(jié)果?

(2)答:可能是亂碼觉阅。

因為GetMemory返回的是指向“棧內(nèi)存”的指針崖疤,該指針的地址不是NULL,但其原現(xiàn)的內(nèi)容已經(jīng)被清除留拾,新內(nèi)容不可知戳晌。

(3)

void GetMemory2(char **p, int num)

{

*p = (char *)malloc(num);

}

void Test(void)

{

char *str = NULL;

GetMemory(&str, 100);

strcpy(str, "hello");

printf(str);

}

請問運行Test函數(shù)會有什么樣的結(jié)果鲫尊?

答:

1)能夠輸出hello

2)內(nèi)存泄漏

(4)

void Test(void)

{

char *str = (char *) malloc(100);

strcpy(str,“hello”);

free(str);

if(str !=NULL)

{

strcpy(str,“world”);

printf(str);

}

}

請問運行Test函數(shù)會有什么樣的結(jié)果痴柔?

答:篡改動態(tài)內(nèi)存區(qū)的內(nèi)容,后果難以預(yù)料疫向,非常危險咳蔚。

因為free(str);之后豪嚎,str成為野指針,

if(str != NULL)語句不起作用谈火。

2.編寫strcpy函數(shù)(10分)

已知strcpy函數(shù)的原型是

char*strcpy(char *strDest, const char *strSrc);

其中strDest是目的字符串侈询,strSrc是源字符串。

(1)不調(diào)用C++/C的字符串庫函數(shù)糯耍,請編寫函數(shù)strcpy

char *strcpy(char*strDest, const char *strSrc);

{

assert((strDest!=NULL) && (strSrc!=NULL));

char *address =strDest;

while( (*strDest++ = *strSrc++) !=\0)

NULL ;

returnaddress ;

}

(2)strcpy能把strSrc的內(nèi)容復(fù)制到strDest扔字,為什么還要char *類型的返回值?

答:為了實現(xiàn)鏈?zhǔn)奖磉_式温技。

例如intlength = strlen( strcpy( strDest,“hello world”));

3.#include

intmain()

{

inta =0x0101;

intb =0x0202;

intc;

c = a&(~b);

c = c|b;

printf("%x,%d\n",c,c);

return0;

}

答案:303,771

4.完成下面函數(shù)以實現(xiàn)使用輾轉(zhuǎn)相除法獲取兩個數(shù)(假設(shè)兩個數(shù)都大于0)的最大公約數(shù)

example:gcd(20,5 ) = 5.gcd(3,10 ) = 1.gcd(1620,1280 ) = 20.

unsigned int gcd(unsignedint

a,unsigned

int b)

{

intc=0;

if(m%n==0) c =n;

else

c=gcd(n,m%n);

returnc;

}

5.用嵌套方式寫一個函數(shù)革为,函數(shù)返回N的階層,要求盡量寫完整

int fun(int n)

{

if (n ==1)

returnn;

returnn*(n-1);

}

6.請寫出下列數(shù)據(jù)類型的范圍char,unsigned char,short,int

答:char(-127~128)unsigned char(0~255)short(-2^16-1 ~2^16)int(-32768~32767)

7.請寫出下面函數(shù)的返回值

char fuc1(){

unsigned int a = 6;

int b = -12;

return(a+b>6)?1:0

}

#define SQP(x)(x*x)

int fuc2()

{

int a = 3;

return SQR(a+2);

}

答:111

8.請計算下列結(jié)構(gòu)所占字節(jié)數(shù)

Typedef structYouKnoow

{

int id;

short age;

char level;

}

答:8

9.關(guān)鍵字const有什么含義舵鳞?

const修飾誰震檩,誰在整個程序運行過程中不能變

10.下方代碼輸出結(jié)果為

main()

{

int a[5] = {1, 2,3, 4, 5};

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

printf(“%d%d”, *(a+1), *(ptr-1));

}

答:D:4, 5

11.用c/c++實現(xiàn)冒泡排序

voidswap_sort(int *p, int n) {

intI, j;

inttmp;

for(i=0;i

for(j=0;j

if(p[j]>p[j+1]){

tmp=p[j];

p[j]=p[j+1];

p[j+1]=tmp;

}

}

}

}

12.用嵌套的方式寫一個函數(shù),該函數(shù)返回N的階乘(N!=1*2*..*N)

int func(int n){if (n==1) return 1; return n * x(n-1);}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜓堕,一起剝皮案震驚了整個濱河市抛虏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌套才,老刑警劉巖迂猴,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異霜旧,居然都是意外死亡错忱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門挂据,熙熙樓的掌柜王于貴愁眉苦臉地迎上來以清,“玉大人,你說我怎么就攤上這事崎逃≈谰螅” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵个绍,是天一觀的道長勒葱。 經(jīng)常有香客問我,道長巴柿,這世上最難降的妖魔是什么凛虽? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮广恢,結(jié)果婚禮上凯旋,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好至非,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布钠署。 她就那樣靜靜地躺著,像睡著了一般荒椭。 火紅的嫁衣襯著肌膚如雪谐鼎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天趣惠,我揣著相機與錄音狸棍,去河邊找鬼。 笑死味悄,一個胖子當(dāng)著我的面吹牛隔缀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播傍菇,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼猾瘸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丢习?” 一聲冷哼從身側(cè)響起牵触,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咐低,沒想到半個月后揽思,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡见擦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年钉汗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲤屡。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡损痰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酒来,到底是詐尸還是另有隱情卢未,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布堰汉,位于F島的核電站辽社,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏翘鸭。R本人自食惡果不足惜滴铅,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望就乓。 院中可真熱鬧汉匙,春花似錦譬淳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽守伸。三九已至绎秒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尼摹,已是汗流浹背见芹。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蠢涝,地道東北人玄呛。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像和二,于是被迫代替她去往敵國和親徘铝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 1,988評論 0 7
  • 史上最全的iOS面試題及答案 迷途的羔羊--專為路癡量身打造的品牌惯吕。史上最精準(zhǔn)的定位惕它。想迷路都難!閃電更新中......
    南虞閱讀 1,506評論 0 8
  • 多線程废登、特別是NSOperation 和 GCD 的內(nèi)部原理淹魄。運行時機制的原理和運用場景。SDWebImage的原...
    LZM輪回閱讀 2,009評論 0 12
  • 史上最全的iOS面試題及答案 iOS面試小貼士———————————————回答好下面的足夠了----------...
    Style_偉閱讀 2,359評論 0 35
  • 1.寫一個NSString類的實現(xiàn) +(id)initWithCString:(c*****t char *)nu...
    韓七夏閱讀 3,772評論 2 37