C语言面试题分享(2)
一、sizeof 和 strlen 有何區(qū)別?
分析:
sizeof 是一個操作符,strlen 是庫函數(shù)。
sizeof 的參數(shù)可以是數(shù)據(jù)的類型,也可以是變量,而 strlen 只能以結(jié)尾為‘\0‘的字符串作參數(shù)。
編譯器在編譯時就計算出了sizeof 的結(jié)果。而 strlen 函數(shù)必須在運行時才能計算出來。并且sizeof計算的是數(shù)據(jù)類型占內(nèi)存的大小,而 strlen 計算的是字符串實際的長度。
數(shù)組做sizeof 的參數(shù)不退化,傳遞給 strlen 就退化為指針了。
二、strcpy、sprintf 與 memcpy 有啥區(qū)別?
操作對象不同,strcpy 的兩個操作對象均為字符串,sprintf 的操作源對象可以是多種數(shù)據(jù)類型,目的操作對象是字符串,memcpy 的兩個對象就是兩個任意可操作的內(nèi)存地址,并不限于何種數(shù)據(jù)類型。
執(zhí)行效率不同,memcpy 最高,strcpy 次之,sprintf 的效率最低。
實現(xiàn)功能不同,strcpy 主要實現(xiàn)字符串變量間的拷貝,sprintf 主要實現(xiàn)其他數(shù)據(jù)類型格式到字符串的轉(zhuǎn)化,memcpy 主要是內(nèi)存塊間的拷貝。
三、鏈表和數(shù)組有何區(qū)別?
(1)存儲形式:數(shù)組是一塊連續(xù)的空間,聲明時就要確定長度。鏈表是一塊可不連續(xù)的動態(tài)空間,長度可變,每個結(jié)點要保存相鄰結(jié)點指針。
(2)數(shù)據(jù)查找:數(shù)組的線性查找速度快,查找操作直接使用偏移地址。鏈表需要按順序檢索結(jié)點,效率低。
(3)數(shù)據(jù)插入或刪除:鏈表可以快速插入和刪除結(jié)點,而數(shù)組則可能需要大量數(shù)據(jù)移動。
(4)越界問題:鏈表不存在越界問題,數(shù)組有越界問題。
總結(jié)
以上是生活随笔為你收集整理的C语言面试题分享(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32的时钟配置——时钟树解析
- 下一篇: C语言面试题分享(3)