題一:
簡述strcpy sprintf與mencpy的區(qū)別
思考過后,再到下方尋找答案
題二:
如何避免“野指針”
思考過后,再到下方尋找答案
題三:
簡述指針常量與常量指針區(qū)別
思考過后,再到下方尋找答案
題一答案:
三者主要有以下不同之處:(1)操作對象不同,strcpy的兩個操作對象均為字符串,sprintf的操作源對象可以是多種數(shù)據(jù)類型,目的操作對象是字符串,memcpy 的兩個對象就是兩個任意可操作的內(nèi)存地址,并不限于何種數(shù)據(jù)類型。(2)執(zhí)行效率不同,memcpy最高,strcpy次之,sprintf的效率最低。(3)實現(xiàn)功能不同,strcpy主要實現(xiàn)字符串變量間的拷貝,sprintf主要實現(xiàn)其他數(shù)據(jù)類型格式到字符串的轉(zhuǎn)化,memcpy主要是內(nèi)存塊間的拷貝。說明:strcpy、sprintf與memcpy都可以實現(xiàn)拷貝的功能,但是針對的對象不同,根據(jù)實際需求,來選擇合適的函數(shù)實現(xiàn)拷貝功能。
題二答案:
“野指針”產(chǎn)生原因及解決辦法如下:(1)指針變量聲明時沒有被初始化。解決辦法:指針聲明時初始化,可以是具體的地址值,也可讓它指向NULL。(2)指針 p 被 free 或者 delete 之后,沒有置為 NULL。解決辦法:指針指向的內(nèi)存空間被釋放后指針應(yīng)該指向NULL。(3)指針操作超越了變量的作用范圍。解決辦法:在變量的作用域結(jié)束前釋放掉變量的地址空間并且讓指針指向NULL。注意:“野指針”的解決方法也是編程規(guī)范的基本原則,平時使用指針時一定要避免產(chǎn)生“野指針”,在使用指針前一定要檢驗指針的合法性。
題三答案:
指針常量是指定義了一個指針,這個指針的值只能在定義時初始化,其他地方不能改變。其實指針常量是唯一的,即NULL;常量指針是指定義了一個指針,這個指針指向一個只讀的對象,不能通過常量指針來改變這個對象的值。指針常量強調(diào)的是指針的不可改變性,而常量指針強調(diào)的是指針對其所指對象的不可改變性。注意:無論是指針常量還是常量指針,其最大的用途就是作為函數(shù)的形式參數(shù),保證實參在被調(diào)用函數(shù)中的不可改變特性。
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19104瀏覽量
304794 -
C語言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136683 -
指針
+關(guān)注
關(guān)注
1文章
480瀏覽量
70551
原文標題:考一考!嵌入式C面試題3道
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論