曾經指標讓我如夢如幻,指標如霧啊,很多人都被折磨的要死不活的,問老師吧,你又不是計算機的,曉得那麼清楚幹嘛,看了一些網上大牛們和老師們的高見,分享一下心得,有錯誤的地方,還請多多指正.
為啥需要指標呢,我不用它,照樣可以用其他方式實現,感覺用的還那麼方便易懂.指標的好處在**呢?
早期cpu遠沒有如今的強大,記憶體也是小的可憐,就像是乙個有好幾個嗷嗷待哺的孩子的普通人(精打細算,這些都是牛人呀),現在的計算機好比是有好多個私生子的風流多情多金的土豪(有錢任性瀟灑,雖說有大把的記憶體,但不是無限的呢,處理的不好還是有可能嗚呼的),所以嘛,沒必要的浪費就不造了,節約是美德(現在不還是弘揚老祖宗的這種做法),同理,盡可能使程式占得記憶體最小.
通俗的指標解釋,記憶體的位址(比如你的家庭位址)。
迷惑我好久的乙個指標變數佔幾個位元組問題,**如下:
# include
int main(void)
究竟是r占用的記憶體大呢還是ch占用的記憶體大…??
結果如下:
結果很平靜的告訴我們一樣大的,說說我的理解,記憶體的位址需要多少位(bit)來編碼。2個位元組的記憶體空間需要1位(編碼為0、1),4個位元組需要2位(編碼為00、01、10、11),8個位元組需要3位,16個位元組需要4位,依次類推,
很容易解釋32位,64位系統了,怎麼算的呢,我的電腦有一塊4g的記憶體,則需要32位來編碼(2的32次方等於4g),這裡的32位在計算機硬體上的體現實質上就是cpu位址匯流排的位數,也就是說,乙個指標型變數所佔的位元組數取決於位址匯流排的位數(隨系統位數的變化而變化),上面的問題中指標r,p,q執行在32位位址匯流排的機器上(32/8=4),就需佔4個位元組了。
既然指標佔4位元組,而我的變數自身卻只佔了1位元組,綜上所述程式節約記憶體的原則,還要指標啥事呢?你想想一波波陣列的來臨,指標r還是佔4位元組,使用指標變數大多情況下,還是展現了節約記憶體的原則的體現.
好比你懶得動了,叫了份外賣,外賣小哥,收到資訊,根據你提供的住址,送貨上門,假設是6樓,只能走樓梯,那個累啊(傳送內容:吃的),你本人只需提供個位址,坐等吃的就行(指標),這就是用指標的好處呀.
讓你翻一下書的100-600頁(指標),一會就翻完了,但是要把100-600頁的內容背下來(資料),這就是差別.
使用指標的情況:
對同乙份資料進行操作的2種情況。
操作分為:讀和寫
1, 對資料進行讀操作,就是將資料複製乙份去讀和直接讀,結局都是一樣的,但其過程就不同了,複製總要耗時的,直接讀肯定會更快一些,所以,對於唯讀的情況來說,使用指標是為了更高效的進行資料的傳遞。
2, 對資料進行寫操作,分別複製乙份資料和對資料直接操作,區別了,區別就體現出來了,複製乙份資料,只是更改了副本,而原先的是不會被更改的,即,面對需要寫操作(寫資料)的情況下,使用指標用來更改同乙份資料。
這也就能夠理解的引用,引用只是多了包裝變得精美了,引用實質上還是指標,所有引用能做到的效果,指標同樣可以做到的.
C 新手上路第六天,指標
include stdafx.h include using namespace std intmain 指標陣列 include stdafx.h include using namespace std intmain 定義陣列,矩陣的第一行 intline2 定義陣列,矩陣的第二行 intlin...
新手上路之Hibernate(5) 繼承對映
之前的幾篇文章主要介紹的是關係對映。之所以用好幾篇的文章來介紹關係對映,其重要性與常用行可見一斑。還有一種對映,也就是今天要介紹的 繼承對映,也是很重要的一種對映模式。繼承對映的實現有三種策略 1 單錶繼承。每棵類繼承樹使用乙個表。2 具體表繼承。每個子類乙個表。3 類表繼承。每個具體類乙個表。下面...
C 新手上路第一天
第一天寫了一些入門的 簡單的用了建構函式和複製建構函式 clock 類 include stdafx.h include cout cin 都是這個檔案裡的還要加入命名空間 using namespace std class clock 建構函式的實現 clock clock intnewh int...