設計思想上:
c++是物件導向的語言,而c是面向過程的結構化程式設計語言
語法上:
c++具有封裝、繼承和多型三種特性
c++相比c,增加了許多態別安全的功能,比如強制型別轉換
c++支援正規化程式設計,比如模板類、函式模板等
指標有自己的一塊空間,而引用只是乙個別名
使用sizeof計算乙個指標的大小為4,而引用則是被引用物件的大小
指標可以初始化為空,而引用必須被初始化且必須是乙個已有物件的引用
作為引數傳遞時,指標需要被解引用才可以對物件進行操作,而對引用的修改都會直接改變引用所指的物件
可以有const指標,但沒有const引用
指標可以指向其他物件,但引用只能是乙個物件的引用,不能被改變
如果返回動態記憶體分配的物件或者記憶體,必須使用指標,引用可能引起記憶體洩漏
陣列:陣列用於儲存多個相同型別資料的集合,位址是連續的
指標:指標相當於乙個變數,存放的是記憶體中的位址
區別:• 賦值:同型別指標變數可以相互賦值,陣列不行,只能乙個乙個元素的賦值或拷貝
• 儲存方式:陣列:陣列在記憶體中是連續存放的,開闢一塊連續的記憶體空間。陣列是根據陣列的下進行訪問的,多維陣列在記憶體中是按照一維陣列儲存的,只是在邏輯上是多維的。指標:指標很靈活,它可以指向任意型別的資料。指標的型別說明了它所指向位址空間的記憶體。
• 求sizeof:陣列所佔儲存空間的記憶體:sizeof(陣列名),陣列的大小:sizeof(陣列名)/sizeof(資料型別)。在32位平台下,無論指標的型別是什麼,sizeof(指標名)都是4,在64位平台下,無論指標的型別是什麼,sizeof(指標名)都是8。
• 初始化方式不同。
• 傳參方式:陣列傳參時,會退化為指標,c語言將陣列的傳參進行了退化。將整個陣列拷貝乙份傳入函式時,將陣列名看做常量指標,傳陣列首元素的位址。一級指標傳參可以接受的引數型別:(1)可以是乙個整形指標 (2)可以是整型變數位址 (3)可以是一維整型陣列陣列名;當函式引數部分是二級指標時,可以接受的引數型別:(1)二級指標變數(2)一級指標變數位址(3)一維指標陣列的陣列名
C常見面試題《一》
q1 區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變...
C 常見面試題
1.c中static有什麼作用 1 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性,故使用static在不同的檔案中定義同名函式和同名變數,而不必擔心命名衝突。2 static的第二個作用是保持變數內容的持久。儲存在靜態資料區的變數會在程式剛開始執行時就...
C常見面試題
1.bool型別,值為true或flase 正確答案 bool flag if flag if flag 以下均為不良風格 if flag true if flag 1 if flag false if flag 0 2.char 3.int int x if x 0 if x 0 4.float ...