記憶體單元的編號叫做位址(address),也稱為指標(pointer)。
1 記憶體單元的指標和記憶體單元的內容是兩個不同的概念,從下圖可以理解:
現在我們用c++語言在深入了解一下指標和位址的關係
#include using namespace std;
int main()
2.1 先梳理一下**的流程,定義乙個兩個int型別的變數並初始化,定義乙個一級指標和乙個二級指標並初始化,最後就是指標的使用。如下圖所示:
2.1.1 所有的常量都存在常量池中,記憶體中儲存的的常量池中常量的位址,c記憶體單元放的是a的位址,d記憶體單元放的是c的位址。
2.2.1 首先我們需要知道a、b、c、d的位址,方便我們後面對比圖,假設上面圖中的位址就是a、b、c、d的位址。
~那*c和**d就是指取位址裡面的內容,所以*c指向0x133,0x133找變數a並且列印a的值3;*d先指向0x135,x135找變數c,**d就減了乙個指標等於*c,*c又指向0x133,0x133找變數a並且列印a的值3。如下圖:(**d是黑線,*c是紅線)
~那&*d和**&d,&*d------&c-------列印c的位址;**&d------**0x136--*0x135--0x133;在這裡千萬不要把*d和&d看成是同乙個位址,*d是0x135,&d是0x136。如下圖:(&*d是黃色的線,**&d是藍色的線)
C 指標詳解
指標是乙個特殊的變數,它裡面儲存的數值被解釋為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的型別,指標的值或者指標所指向的記憶體區,還有指標本身所佔據的記憶體區。去掉宣告中指標的名字,剩下的就是指標的型別。例如 int ptr 指標的型別是int char p...
C 指標詳解
前言 今天發現自己對c 了解得還不夠深刻,毅然決定重新補充c 指標的知識。一直在論壇裡聽別人說沒有幾個人真正的會用指標,我居然懷疑了一下自己,好吧。惡補唄,順便寫篇部落格祭奠一下,這篇文章適合非小白看,我只是把容易錯的點補充了。1.資料在記憶體中是如何儲存的 在編譯時就會系統就會給變數分配記憶體空間...
詳解C指標
指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體 使用者空間的虛擬記憶體 裡的乙個位址。乙個指標包含四個方面的內容 指標的型別 指標所指向的型別 指標所指向的記憶體區 指標本身所佔據的記憶體區。接下來就下面幾個例子作說明 1 int p 2 char p 3 int p 4 int p 3 5...