色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享10道有趣的嵌入式C語(yǔ)言面試題及答案

工程師進(jìn)階筆記 ? 來(lái)源:CSDN技術(shù)社區(qū) ? 2023-05-09 10:54 ? 次閱讀

10個(gè)C語(yǔ)言面試題,涉及指針、進(jìn)程、運(yùn)算、結(jié)構(gòu)體、函數(shù)、內(nèi)存,看看你能做出幾個(gè)!

1.gets()函數(shù)

問(wèn):請(qǐng)找出下面代碼里的問(wèn)題:

#include
intmain(void)
{
charbuff[10];
memset(buff,0,sizeof(buff));

gets(buff);

printf("
Thebufferenteredis[%s]
",buff);

return0;
}

答:上面代碼里的問(wèn)題在于函數(shù)gets()的使用,這個(gè)函數(shù)從stdin接收一個(gè)字符串而不檢查它所復(fù)制的緩存的容積,這可能會(huì)導(dǎo)致緩存溢出。這里推薦使用標(biāo)準(zhǔn)函數(shù)fgets()代替。

2.strcpy()函數(shù)

問(wèn):下面是一個(gè)簡(jiǎn)單的密碼保護(hù)功能,你能在不知道密碼的情況下將其破解嗎?

#include

intmain(intargc,char*argv[])
{
intflag=0;
charpasswd[10];

memset(passwd,0,sizeof(passwd));

strcpy(passwd,argv[1]);

if(0==strcmp("LinuxGeek",passwd))
{
flag=1;
}

if(flag)
{
printf("
Passwordcracked
");
}
else
{
printf("
Incorrectpasswd
");

}
return0;
}

答:破解上述加密的關(guān)鍵在于利用攻破strcpy()函數(shù)的漏洞。所以用戶(hù)在向“passwd”緩存輸入隨機(jī)密碼的時(shí)候并沒(méi)有提前檢查“passwd”的容量是否足夠。

所以,如果用戶(hù)輸入一個(gè)足夠造成緩存溢出并且重寫(xiě)“flag”變量默認(rèn)值所存在位置的內(nèi)存的長(zhǎng)“密碼”,即使這個(gè)密碼無(wú)法通過(guò)驗(yàn)證,flag驗(yàn)證位也變成了非零,也就可以獲得被保護(hù)的數(shù)據(jù)了。例如:

$./psswdaaaaaaaaaaaaa

Passwordcracked

雖然上面的密碼并不正確,但我們?nèi)匀豢梢酝ㄟ^(guò)緩存溢出繞開(kāi)密碼安全保護(hù)。

要避免這樣的問(wèn)題,建議使用 strncpy()函數(shù)。

作者注:最近的編譯器會(huì)在內(nèi)部檢測(cè)棧溢出的可能,所以這樣往棧里存儲(chǔ)變量很難出現(xiàn)棧溢出。在我的gcc里默認(rèn)就是這樣,所以我不得不使用編譯命令‘-fno-stack-protector’來(lái)實(shí)現(xiàn)上述方案。

3.main()的返回類(lèi)型

問(wèn):下面的代碼能 編譯通過(guò)嗎?如果能,它有什么潛在的問(wèn)題嗎?

#include

voidmain(void)
{
char*ptr=(char*)malloc(10);

if(NULL==ptr)
{
printf("
Mallocfailed
");
return;
}
else
{
//Dosomeprocessing
free(ptr);
}

return;
}

答:因?yàn)閙ain()方法的返回類(lèi)型,這段代碼的錯(cuò)誤在大多數(shù)編譯器里會(huì)被當(dāng)作警告。main()的返回類(lèi)型應(yīng)該是“int”而不是“void”。

因?yàn)椤癷nt”返回類(lèi)型會(huì)讓程序返回狀態(tài)值。這點(diǎn)非常重要,特別當(dāng)程序是作為依賴(lài)于程序成功運(yùn)行的腳本的一部分運(yùn)行時(shí)。

4.內(nèi)存泄露

問(wèn):下面的代碼會(huì)導(dǎo)致內(nèi)存泄漏嗎?

#include

voidmain(void)
{
char*ptr=(char*)malloc(10);

if(NULL==ptr)
{
printf("
Mallocfailed
");
return;
}
else
{
//Dosomeprocessing
}

return;
}

答:盡管上面的代碼并沒(méi)有釋放分配給“ptr”的內(nèi)存,但并不會(huì)在程序退出后導(dǎo)致內(nèi)存泄漏。在程序結(jié)束后,所有這個(gè)程序分配的內(nèi)存都會(huì)自動(dòng)被處理掉。但如果上面的代碼處于一個(gè)“while循環(huán)”中,那將會(huì)導(dǎo)致嚴(yán)重的內(nèi)存泄漏問(wèn)題!

提示:如果你想知道更多關(guān)于內(nèi)存泄漏的知識(shí)和內(nèi)存泄漏檢測(cè)工具,可以來(lái)看看我們?cè)赩algrind上的文章。

5.free()函數(shù)

問(wèn):下面的程序會(huì)在用戶(hù)輸入’freeze’的時(shí)候出問(wèn)題,而’zebra’則不會(huì),為什么?

#include

intmain(intargc,char*argv[])
{
char*ptr=(char*)malloc(10);

if(NULL==ptr)
{
printf("
Mallocfailed
");
return-1;
}
elseif(argc==1)
{
printf("
Usage
");
}
else
{
memset(ptr,0,10);

strncpy(ptr,argv[1],9);

while(*ptr!='z')
{
if(*ptr=='')
break;
else
ptr++;
}

if(*ptr=='z')
{
printf("
Stringcontains'z'
");
//Dosomemoreprocessing
}

free(ptr);
}

return0;
}

答:這里的問(wèn)題在于,代碼會(huì)(通過(guò)增加“ptr”)修改while循環(huán)里“ptr”存儲(chǔ)的地址。當(dāng)輸入“zebra”時(shí),while循環(huán)會(huì)在執(zhí)行前被終止,因此傳給free()的變量就是傳給malloc()的地址。

但在“freeze”時(shí),“ptr”存儲(chǔ)的地址會(huì)在while循環(huán)里被修改,因此導(dǎo)致傳給free()的地址出錯(cuò),也就導(dǎo)致了seg-fault或者崩潰。

6.使用_exit退出

問(wèn):在下面的代碼中,atexit()并沒(méi)有被調(diào)用,為什么?

#include

voidfunc(void)
{
printf("
Cleanupfunctioncalled
");
return;
}

intmain(void)
{
inti=0;

atexit(func);

for(;i<0xffffff;i++);?
?????
????_exit(0);?
}

這是因?yàn)開(kāi)exit()函數(shù)的使用,該函數(shù)并沒(méi)有調(diào)用atexit()等函數(shù)清理。如果使用atexit()就應(yīng)當(dāng)使用exit()或者“return”與之相配合。

7.void*和C結(jié)構(gòu)體

問(wèn):你能設(shè)計(jì)一個(gè)能接受任何類(lèi)型的參數(shù)并返回interger(整數(shù))結(jié)果的函數(shù)嗎?

答:如下:

intfunc(void*ptr)

如果這個(gè)函數(shù)的參數(shù)超過(guò)一個(gè),那么這個(gè)函數(shù)應(yīng)該由一個(gè)結(jié)構(gòu)體來(lái)調(diào)用,這個(gè)結(jié)構(gòu)體可以由需要傳遞參數(shù)來(lái)填充。

8. * 和 ++ 操作

問(wèn):下面的操作會(huì)輸出什么?為什么?

#include

intmain(void)
{
char*ptr="Linux";
printf("
[%c]
",*ptr++);
printf("
[%c]
",*ptr);

return0;
}

答:輸出結(jié)果應(yīng)該是這樣:

[L]

[i]

因?yàn)椤?+”和“ * ” 的優(yōu)先權(quán)一樣,所以“ * ptr++ ”相當(dāng)于 “ * (ptr++) ”。即應(yīng)該先執(zhí)行 ptr++,然后才是 * ptr,所以操作結(jié)果是“L”。第二個(gè)結(jié)果是“i”。

9.問(wèn):修改代碼片段

問(wèn):下面的代碼段有錯(cuò),你能指出來(lái)嗎?

#include

intmain(void)
{
char*ptr="Linux";
*ptr='T';

printf("
[%s]
",ptr);

return0;
}

答:這是因?yàn)?,通過(guò) * ptr = ‘T’,會(huì)改變內(nèi)存中代碼段(只讀代碼)“Linux”的第一個(gè)字母。這個(gè)操作是無(wú)效的,因此會(huì)造成segment-fault或者崩潰。

10.返回本地變量的地址

問(wèn):下面代碼有問(wèn)題嗎?如果有,該怎么修改?

#include

int*inc(intval)
{
inta=val;
a++;
return&a;
}

intmain(void)
{
inta=10;
int*val=inc(a);
printf("
Incrementedvalueisequalto[%d]
",*val);

return0;
}

答:盡管上面的程序有時(shí)候能夠正常運(yùn)行,但是在“inc()”中存在嚴(yán)重的漏洞。這個(gè)函數(shù)返回本地變量的地址。

因?yàn)楸镜刈兞康纳芷诰褪恰癷nc()”的生命周期,所以在inc結(jié)束后,使用本地變量會(huì)發(fā)生不好的結(jié)果。這可以通過(guò)將main()中變量“a”的地址來(lái)避免,這樣以后還可以修改這個(gè)地址存儲(chǔ)的值。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5086

    文章

    19144

    瀏覽量

    306096
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3034

    瀏覽量

    74137
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7608

    瀏覽量

    137111
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4338

    瀏覽量

    62739
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    480

    瀏覽量

    70581

原文標(biāo)題:分享 10 道有趣的嵌入式 C 語(yǔ)言面試題及答案

文章出處:【微信號(hào):工程師進(jìn)階筆記,微信公眾號(hào):工程師進(jìn)階筆記】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于C語(yǔ)言10面試題

    各位,今天給大家搜集了10比較好的面試題,涉及了指針、運(yùn)算、結(jié)構(gòu)體、函數(shù)、內(nèi)存,應(yīng)該來(lái)說(shuō)比較全面了,有興趣的做一下檢測(cè)一下自己的水平吧!
    發(fā)表于 09-15 10:28 ?1172次閱讀

    常見(jiàn)的嵌入式C語(yǔ)言面試題

    數(shù)組是最基本的數(shù)據(jù)結(jié)構(gòu),關(guān)于數(shù)組的面試題也屢見(jiàn)不鮮,本文羅列了一些常見(jiàn)的面試題,僅供參考。目前有以下18題目。
    發(fā)表于 07-18 10:46 ?827次閱讀

    經(jīng)典嵌入式面試題

    經(jīng)典嵌入式面試題
    發(fā)表于 08-20 09:39

    C語(yǔ)言面試題大全

    C語(yǔ)言面試題大全{:1:}{:2:}{:1:}{:1:}{:1:}{:1:}
    發(fā)表于 04-10 20:51

    又到一年畢業(yè)季,分享經(jīng)典嵌入式面試題

    比較全面的嵌入式面試題,問(wèn)答、選擇題形式,有答案。
    發(fā)表于 08-18 17:00

    C語(yǔ)言 經(jīng)典面試題

    C語(yǔ)言經(jīng)典面試題目.doc
    發(fā)表于 08-05 22:03

    嵌入式開(kāi)發(fā)面試題3題,思考一下,你會(huì)幾個(gè)

    嵌入式開(kāi)發(fā)面試題3題,思考一下,你會(huì)幾個(gè)1.ARM異常有哪些分類(lèi)?2.ARM異常會(huì)發(fā)生哪些硬件操作?3.請(qǐng)簡(jiǎn)述中斷和異常的差別?
    發(fā)表于 08-21 14:49

    c語(yǔ)言面試題,c++面試題下載

    c語(yǔ)言面試題,c++面試題1. static有什么用途?(請(qǐng)至少說(shuō)明兩種) 1) 限制變量的作用域 2) 設(shè)置變量的存儲(chǔ)域 2.&
    發(fā)表于 10-22 11:19 ?5次下載

    c語(yǔ)言面試題

    c語(yǔ)言面試題集(單片機(jī))C language problem(20151125084232)
    發(fā)表于 12-18 14:05 ?9次下載

    c語(yǔ)言面試題

    c語(yǔ)言面試題
    發(fā)表于 11-05 16:48 ?0次下載

    C語(yǔ)言經(jīng)典面試題

    面試題
    發(fā)表于 12-20 22:41 ?0次下載

    C語(yǔ)言經(jīng)典面試題

    C語(yǔ)言 經(jīng)典面試題
    發(fā)表于 01-05 11:27 ?0次下載

    淺談嵌入式軟件開(kāi)發(fā)經(jīng)典面試題

    嵌入式軟件開(kāi)發(fā)經(jīng)典面試題
    的頭像 發(fā)表于 03-20 14:25 ?7835次閱讀
    淺談<b class='flag-5'>嵌入式</b>軟件開(kāi)發(fā)經(jīng)典<b class='flag-5'>面試題</b>

    Java的經(jīng)典面試題答案詳細(xì)說(shuō)明

    發(fā)現(xiàn)網(wǎng)上很多Java面試題都沒(méi)有答案,所以花了很長(zhǎng)時(shí)間搜集整理出來(lái)了這套Java面試題大全,希望對(duì)大家有幫助哈~ 博主已將以下這些面試題整理成了一個(gè)Java
    發(fā)表于 09-07 08:00 ?0次下載
    Java的經(jīng)典<b class='flag-5'>面試題</b>和<b class='flag-5'>答案</b>詳細(xì)說(shuō)明

    c語(yǔ)言面試題集(完整版)

    電子發(fā)燒友網(wǎng)站提供《c語(yǔ)言面試題集(完整版).pdf》資料免費(fèi)下載
    發(fā)表于 10-20 11:20 ?2次下載
    <b class='flag-5'>c</b><b class='flag-5'>語(yǔ)言</b><b class='flag-5'>面試題</b>集(完整版)
    主站蜘蛛池模板: 日韩免费一区| seba51久久精品| 中文免费视频| yin荡体育课羞耻play双性| 国产色婷亚洲99精品AV| 久久久99精品成人片中文| 奇米狠狠一区二区三区| 亚洲国产AV无码综合在线| 9277在线观看免费高清完整版| 父亲猜女儿在线观看| 久久精品18| 色哟哟网站入口在线观看视频| 伊人电院网| 大香交伊人| 久久精品中文字幕有码日本| 日本免费一区二区三区四区五六区| 亚洲高清有码中文字| a级毛片高清免费视频| 果冻传媒在线观看完整版免费| 免费在线视频a| 亚洲国产AV一区二区三区四区| 99在线精品国自产拍| 国产亚洲精品品视频在线| 欧美97色伦影院在线观看| 亚洲免费va在线观看| 超碰久久国产vs| 久久久亚洲国产精品主播 | 国产精品乱码一区二区三| 美女漏bb| 亚洲视频在线免费看| 东北老妇xxxxhd| 老师我好爽再深一点老师好涨| 呜呜别塞了啊抽插| www.色片| 麻豆传煤网站网址入口在线下载| 亚洲aaaa级特黄毛片| 大肥婆丰满大肥奶bbw肥| 美女脱三角裤| 亚洲精品无码不卡在线播HE| 国产69精品久久久久APP下载| 免费在线视频a|