物聯網嵌入式學習的內容繁雜,很多小伙伴在準備物聯網面試的時候,面對眾多知識點無從下手。小千在此為大家整理了物聯網面試題集錦—C++語言篇,希望能夠幫助大家順利通關!
C++語言篇
1、談談你對命名空間的理解
namespace 是?個關鍵字:隨著?程量的增加,變量命名上不可避免的會出現重名,防止名稱沖突。
(在兩個不同的命名空間中,即使2個變量名相同,也是2個不同的變量),在實際工作中,基本都使用標準命名空間。
命名空間只能全局范圍內定義,不能定義在函數內部。
命名空間內,可以存放 變量、函數、結構體、類 ;也可以嵌套其他的命名空。
命名空間可以匿名(但?般不這樣使?),類似靜態全局變量。
命名空間是可以起別名.
2、談談指針和引?的區別
引用是給變量起別名,內部實現是指針常量(int* const ref = &a),其可以簡單的理解為本體指
針存放的是變量的地址
引用的本質是指針常量,其指向不可修改,而指針可以改變指向
引用創建的同時必須初始化,指針創建的時候可以不必初始化
引用不能為空,指針可以為 NULL
“引用變量 ref”的內存單元保存的是“被引用變量 a”的地址 sizeof(引用) = 指向變量的大小 sizeof(指針) = 指針本身的大小
引用使用的時候無需解引用,指針需要解引用
指針和引用“自增/自減運算”意義不?樣
在同等需求下,函數傳參,引用可以將?級指針
3、談談你對內聯函數的理解
(1)宏函數的缺陷:
需要加括號實現,以保證優先級的完整性。
即使加了括號,有些情況依然有缺陷。
(2)在普通函數前面加上inline關鍵字使其成為內聯函數;
(3)內聯函數本身是一個函數,宏函數不是;
(4)內聯函數具有普通函數所有的行為 唯一不同之處在于 :內聯函數會在適當的地方向宏函數一樣展開,可以以空間換時間,內聯函數即可以避免宏函數的缺陷,又可以避免普通函數入棧時的時間浪費;
(5)在任何類內定義的函數自動成為內聯函數;
(6)下列情況,普通函數即使指定為內聯函數,編譯器也可能考慮不按內聯編譯 a、存在任何形式的循環語句 b、存在過多的條件判斷語句c、函數體過于龐? d、對函數進?取址操作;
(7)a、內聯僅僅只是給編譯器?個建議,編譯器不?定會接受這種建議;b、如果你沒有將函數聲明為內聯函數,那么編譯器也可能將此函數做內聯編譯(?個好的編譯器將會內聯小的、簡單的函數)因此,不用刻意使用內聯函數,可以交給編譯器去自行處理。
更多關于“物聯網培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。