標籤:new 取出 根據 main 保留 開頭 http 封裝 傳回值
“指標變數”是指用來存放變數地址的變數。指標變數也是一個變數,它和其他變數的區別在於它裡面存的不是普通的資料,而是另一個變數的地址。訪問變數有兩種方式,第一種是直接根據變數名稱取到變數的地址,然後去對應記憶體位址拿到變數的值,這種方式叫做“直接引用”;第二種方式是定義一個指標變數指向變數,從指標變數中拿到變數的地址,再去對應記憶體位址拿到變數的值,這種方式叫做“間接引用”。
2.1 如何用指標表示一個變數
下面通過幾張圖片來看一下如何用指標表示一個變數,需要注意的是指標的資料類型必須和它所指向的變數的資料類型相同。
2.2 數組和指標
數組可以儲存一組相同的資料元素,它們在記憶體中佔用的是連續的記憶體空間(如所示),所以我們可以通過指標去遍曆或者運算元組。
迴文字串是指正序和逆序讀該字串都是一樣的字串,因此可以定義兩個指標,分別指向字元數組中的第一個字元和最後一個字元,然後依次向後或向前取出成對的字元,進行比較,代碼如所示。
從上面的例子可以看出,通過指標start++、end--,可以遍曆字串中的字元。數組是占連續的儲存空間,每個元素所佔得位元組數就是數組資料類型的位元組數,所以實際上start++移動的位元組數就是數組中元素所佔的位元組數,那麼指標如何知道元素的資料類型呢?這就回到開頭說到的,定義的指標的資料類型必須和它所指向的VARIANT 資料型別相同,換句話說,就是指標只能指向和它定義的資料類型相同的變數。
2.3 指標作參數&指標作傳回值
當我們把某個功能代碼封裝到函數中時,可以用指標作為參數,也可以用指標作為傳回值。比如所樣本子。
如上所示,在main函數中,由鍵盤輸入了明文存到一個字串中,然後調用encryption(char *)這個函數完成加密。要加密的內容儲存在數組中,在調用函數的時候,需要將數組傳入,這裡是用指標來完成的。調用函數時傳入的psw是數組的地址,被指標p_psw接收,稱為指標變數的值,這個時候,就可以說指標p_psw指向了字串數組的第一個字元。字串是以‘\0’結尾的特殊的字元數組,所以通過指標++依次遍曆字串中每一個字元進行加密,直到指標指向‘\0’結束標誌。在函數的結尾又將保留的字串的首地址的指標作為傳回值返回,實際上返回的p_temp是返回的字元數組的首地址。回到main函數,定義了一個新的指標接收傳回值,其實就是讓這個新指標p_new指向字串第一個字元,所以通過puts(p_new)輸出的就是加密之後的字串。
C語言——指標