C和C 中指標與位址的區別

2021-07-03 23:02:42 字數 700 閱讀 5301

在c語言和c++中,指標是非常重要的一部分,程式的執行過程中可以通過指標來找到要操作的資料和可執行的函式**。很多人就明白指標和位址是有區別的,但是很少有人能說清楚這種區別。

指標總共可以分為兩種,函式指標和資料指標。而指標和位址最大的區別就是指標是有型別的,位址是沒有型別的。我們當然可以通過絕對位址的方式找到函式和資料,但是位址是沒有型別的,不能對位址進行算術操作,在涉及諸如陣列等操作時就不能通過位址的自增和自減來訪問陣列的各個變數。但是通過對指標的引用,就可以通過對指標進行一系列的加加減減操作很方便的訪問陣列的各個元素。

所以,指標是由位址和型別兩部分構成的,指向資料的指標不僅記錄該資料的在記憶體中的存放的位址,還記錄該資料的型別,即在記憶體中占用幾個位元組,這是位址所不具有的。指向函式的指標不僅記錄函式的入口位址,也記錄該函式的型別,即函式的返回值型別和該函式的引數型別。

在c++中還有一種特殊的資料型別,那就是物件,這是一種使用者自定義的資料型別。它即包含了資料,又包含了函式。但是在同乙個類模板宣告的物件變數各自擁有乙份資料成員,卻共享乙份函式成員,因為對有共同類模板的物件來說,他們的資料成員可能不同,但是他們的用來處理資料的函式**確是相同的,所以他們共享乙份成員函式。而此時,物件的指標指向的各自的資料成員。

指標的使用一定要特別小心,千萬不能越界,否則會出現意想不到的結果。而且一定不要使用未初始化過的指標,這樣將會訪問到位置的記憶體,有可能會給作業系統帶來毀滅性的災難,雖然健壯的作業系統一般不會允許這麼做。

C 中指標與引用區別

1.都是位址的概念 指標指向一塊記憶體,它的值為該塊記憶體的位址。引用是某塊記憶體的別名。1.指標是實體,引用只是乙個別名。2.使用時,引用需要解引用,指標不需要。解引用指獲得該記憶體位址處儲存的值 3.引用從一而終,指標可多變。給引用賦值修改的是該引用所關聯的物件的值,而並不是使引用與另乙個物件關...

C 中 指標引用)與 (指標)的區別

指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...

C 中指標 與指標引用 的區別

c 中 指標引用 與 指標 的區別 指標是乙個存放位址的變數,指標引用指的是這個存放位址的變數的引用。c 中如果引數不是引用的話,會呼叫引數物件的拷貝建構函式,所以如果有需求想改變指標所指的物件即想要改變指標變數裡存放的位址,就要使用指標引用。下面用乙個測試例子和過程圖結合進行說明 分析 在test...