C 指標宣告 初始化 基本操作和引數傳遞

2021-09-01 12:21:42 字數 1242 閱讀 3033

這一系列文章用於記錄技術小白在學習道路上遇到的那些坑,在剛開始接觸c系列的程式語言的時候,相信很多人都對指標感到頭疼,筆者也一樣,第一次的從入門到放棄就出現在這裡,時隔很久之後,決定好好學習一下,明知山有虎偏向虎山行。

type * pointervariable;

type * pointervariable = address;

type是任意型別、address是給定type型別物件的位址。

注意:*號必須在識別符號前面,address必須是和指標型別相同的物件的位址,指標可以被賦值為0,稱為空位址,也可看作零指標變數。

int main()

(一)去引用和間接引用

指標變數只儲存記憶體位址,通過指標訪問記憶體位址的內容需要使用 * 號去引用。

* pointervariable

在對指標去引用時指標不能為空,且指向記憶體乙個特定位置,避免懸空指標問題。

在上面的示例**中,iptr 存放的是 i 的記憶體位址,那麼 * iptr 就相當於 i 的乙個別名。可以通過引用 * iptr 來間接訪問 i 的內容。

(二)賦值

指標變數 jptr 被賦予同一型別的指標變數 iptr 的值之後,兩者都指向了同一記憶體位址,即 i 的記憶體位址,這時對 * iptr 和 * jptr 進行操作都將改變 i 的內容。

(三)比較

用關係運算子比較同一型別的兩個指標,比如判斷 iptr 和 jptr 是否指向同一位址。

下面是乙個交換兩個 int 型變數值的c++函式:

void swap(int & first , int & second)

呼叫函式則是swap(x ,y)

翻譯成c語言如下所示:

void swap(int * first , int * second)

呼叫函式則是swap(&x ,&y)

這是引用傳遞,first 和 second 都相當於乙個別名。乙個引用形參被翻譯成乙個指標變數,相應的實參被翻譯成這個實參的位址。當在函式中被使用時,指標形參被自動地去引用。從而產生對應實參的別名。

指標也可以作為實參傳遞給函式,與之對應的形參可以是值形參或者引用形參,但是型別必須一致。

變數定義 宣告 初始化

變數定義就是告訴編譯器在何處建立變數的儲存,以及如何建立變數的儲存。變數定義指定乙個資料型別,幷包含了該型別的乙個或多個變數的列表,如下所示 type variable list 在這裡,type 必須是乙個有效的 c 資料型別,可以是 char w char int float double bo...

C 陣列的概念和宣告 初始化

陣列是乙個儲存相同型別元素的固定大小的有順序的集合。陣列是用來儲存資料的集合,通常認為陣列是乙個同一型別變數的集合。陣列也是一種資料型別,陣列是引用型別 1.1陣列的型別 一維陣列 二維陣列 多維陣列 交錯陣列 1.2簡單陣列 1.2.1陣列的宣告 資料型別 陣列名稱 通過陣列的宣告,明確這個陣列中...

宣告 初始化和例項化的區別

我算是剛入門的菜鳥,今天說下宣告 初始化和例項化的區別和使用,如有不對的地方歡迎各位指正。宣告是指使用乙個物件的時候,先定義屬於哪個型別並,比如string str str是宣告 定義 了乙個string型別的物件。初始化可以理解為給宣告的物件賦值的過程。string str hello str現在...