程式設計師面試之指標和應用(三)

2021-07-05 08:04:21 字數 1770 閱讀 9356

引用相當於乙個變數的別名,或者通俗的說就是乙個變數的「外號」,如果沒有定義好的變數,那就沒有相應的「外號」,於是指標和引用可以從以下幾個方面區分,

(1) 非空性:引用在定義時必須賦值,而指標定義是可以賦值可以不賦值。

(2) 合法性測試:函式呼叫中,傳遞引用時,不需要進行合法性檢驗,而傳遞指標時,要進行合法性檢驗,防止傳遞空指標。

(3) 可修改性:引用相當於乙個變數的「外號」,一旦確定,不可改變,而指標可以隨意改變。

int *ptr;

*ptr = 25; //未給指標賦初始值,程式崩潰

int *ptr = 0x8000;

*ptr = 25; //隨意的給指標賦初始值,較危險

(1) 函式指標:void (*f)()

(2) 函式返回值指標:void* f()

(3) const指標:const int*

(4) 指向const的指標:int * const 

(5) 指向const的const指標:const int * const 

(6) double*  (*gh)[10],gh是指向乙個一維陣列的指標,陣列中的元素都是 doublue*型。

(7) double (*f[10])(),f是乙個陣列,f有10個元素,元素都是函式指標,指標指向的函式型別都是沒有引數且返回值為double的函式。

(8) long (*fun)(int),fun是函式指標,指向的函式型別為引數為int型,返回值為long型。

(9) int (*(*f)(int,int))(int),f是乙個函式指標,指向的函式型別為,引數為int,int,返回值為函式指標,返回的函式指標,引數為int,返回型別也為int。

(1) int (*a)[10],陣列指標,指向元素為int型,且包含10個元素的陣列。

(2) int *a[10],  指標陣列,相當於儲存了10個int*型的指標。

malloc/free 是c++/c中的庫函式,而new/delete是c++中的操作符,二者都用於記憶體的分配。但對已非內建資料型別,malloc/free無法滿足動態物件的要求,物件在建立時要自動呼叫建構函式,物件在消亡前要自動呼叫析構函式。由於mallo/free是庫函式,無法將呼叫建構函式和析構函式的任務強加給malloc/free。因此c++需要乙個能完成動態記憶體分配和初始化工作的new操作,以及能完成清理與釋放記憶體的delet操作。

c++中智慧型指標的引入,主要是為了防止記憶體洩露。其原理就是通過建立乙個物件來管理記憶體資源,每個物件申請完記憶體後,將返回的位址傳遞給智慧型指標,程式設計師不需要在擔心記憶體不能被即使釋放的問題,智慧型指標會幫助你在適當的時候完成記憶體的釋放。

auto_ptr:現在使用的較少,它的特點是,當auto_ptr被拷貝時,原來的那乙份會被刪除。

this指標時時刻刻指向例項本身。

(1) this指標本質是乙個函式引數,只是被編譯器隱藏起來了,全域性函式和靜態函式不能使用this指標,只有成員函式可以使用。

(2) this指標在成員函式開始之前被構造,在函式結束後被清除,this指標的生命週期與普通的函式引數一樣。當呼叫乙個類的成員函式時,編譯器會將this指標作為函式的引數傳遞進去。由下例可知,this是乙個常指標,是不能被修改的。

a a;

a.func(10);//等於 a.func(&a,10)

在編譯器看來,func函式的原型是: int func(a* const this, int p)
(3) this指標不占用物件的空間,只會占用引數傳遞時的空間,或者直接占用乙個暫存器。

程式設計師面試

1.內聯函式和巨集的差別 內聯函式要做引數型別檢查,這是內聯函式和巨集相比的優勢 2.指標和引用的區別 1 非空區別。乙個引用不能指向空值,必須指向乙個物件。指標可以為空。2 合法性區別。使用引用不用檢測其合法性,但指標必須先檢查是否合法。3 可修改區別。指標在初始化之後還可以修改其指向的內容,但是...

如何面試php程式設計師,如何面試PHP程式設計師

乙個包含中英文的字串如何獲得它的自然長度 看看ta是否有encoding的知識和意識 問一問什麼是orm,有時候會問這個詞的英文全稱是什麼,問問ta對於orm有什麼個人的看法?看看ta學習細不細,有沒有技術判斷,php開發人員應該知道什麼時候使用orm 問一問假如ta要自己去實現乙個framewor...

19 c c 程式設計師面試寶典 this指標

19.c c 程式設計師面試寶典 this指標 this指標是物件導向程式設計中的一項重要概念,在c 中,它表示當前執行的物件。在實現物件的方法時,可以使用this指標來獲得該物件自身的引用。面試題91 什麼是this指標 在乙個非靜態的成員裡面,this關鍵字就是乙個指標,指向該函式的這次呼叫所針...