學習了c語言之後,關於指標部分看了無數遍,有時候明明覺得自己看懂了,指標就是位址,但是總是在看**時候糊里糊塗的搞不明白,最近又關於指標強化了一把。
大部分情況下對於程式中指標糊塗是因為不明白指標符「*」有兩個作用:
第一,作為識別符號,定義變數為指標,如int *p;//只是說明變數p是指標變數,而沒有實際意義。
第二,作為運算子,像+,—,運算子一樣,如cout<<*p;//輸出指標變數p所指向的內容。
一般在程式中,第一次出現的指標符*,是作為識別符號,申明指標變數,之後出現是作為運算子,但也不一定,主要還是看程式語境。
而「&」符號是一元運算子,取變數位址。
好了,關於指標我目前使用最多的是作為引數傳遞。由於自己研究影象處理,程式中往往要處理上千的,記憶體常常溢位,記憶體分配尤其重要,這時候我被迫學習了指標的使用。
物件導向程式設計函式傳遞往往是值傳遞,但是值傳遞的形參是實參的拷貝,如果此時我用值傳遞,上千張在記憶體中再拷貝乙份可想而知,所以考慮用指標傳遞。
//指標傳遞
void swap(int *a,int *b)
intmain()
//輸出2 1 , 2 1
上段程式中,實參傳遞的是x,y 的位址,形參定義a,b為指標變數,a,b內容為x,y位址的拷貝,程式中*a,*b是x,y位址所指向的內容,即為x,y。
所以程式中操作的也是x,y本身,此程式不需要重新在記憶體中開闢新的空間,之間操作實參本身。
另一種傳遞方式,引用傳遞,作用和指標傳遞一樣
//引用傳遞:
void swap(int &a,int &b)
intmain()
上段**跟指標傳遞結果一樣,均輸出2 1 , 2 1
函式呼叫形式跟值傳遞一樣,但是被呼叫函式的形參則引用x,y 的位址,函式中操作的也是x,y本身。
C語言 取址符 定址符 六
宣告變數 int i num int ii num 3 float f num char c pointer cc pointer 一 基本概念 用來儲存位址的變數 二 一元運算子 乙個變數的位址可以看作是在記憶體中的位置,值以十六進製制表示 0x7fff5fbff7ac int point 100...
PHP取位址符 引用符,引址符
php的引用就是在變數或者函式 物件等前面加上 符號。在php 中引用的意思是 不同的名字訪問同乙個變數內容。與c語言中的指標是有差別的,c語言中的指標裡面儲存的是變數的內容在記憶體中存放的位址。變數的引用 php 的引用允許你用兩個變數來指向同乙個內容。a abc b a echo a 這裡輸出 ...
取址符的作用
一 int a int b a a b指向同乙個記憶體位址,對a的操作等同於對b的操作。int a int b a b中儲存的是a的位址。對 b 的任何操作相當於對a的操作 二 void exchg1 int x,int y void exchg2 int x,int y void exchg3 i...