網(wǎng)站運(yùn)營模式有哪些短網(wǎng)址鏈接生成
今天不是做題系列,是知識系列啦。
說到指針,我們初學(xué)這一定會氣的牙癢癢把,筆者也是,這么我好久而不得呀,今天來讓我們聊聊指針。
其一
首先,我們明確的知道,假如我們開一個變量,那么我們的c++程序會給他分配內(nèi)存,并且在此內(nèi)存上來存儲數(shù)值。我們使用取地址符&來驗證地址
請看代碼
int a=10;cout<<"a="<<a<<" "<<"a的地址為"<<&a<<endl;
?所以我們每開一個一個變量并為它賦予初始值,那么系統(tǒng)便會為我們在內(nèi)存里開辟一個空間來存儲我們賦予的數(shù)值。
由此推廣,指針也不例外。我們開辟一個指針變量,系統(tǒng)也會為他在內(nèi)存中開辟一個空間,只是與基本數(shù)據(jù)類型不同的是指針變量存儲的不是具體的數(shù)值例如整數(shù)、浮點(diǎn)數(shù)之類,而是一個變量的地址。
我們來驗證一下:
int* p;cout<<"我們開的指針變量的地址為"<<&p<<endl;p=&a;cout<<"p的存儲的地址為"<<p<<" "<<"a的地址為"<<&a<<endl;cout<<"我們開的指針變量的地址為"<<&p<<endl;
運(yùn)行結(jié)果:
大家看到了嗎,我們開的指針變量本身也有地址,只不過他的地址存儲的值也是地址,也就是說指針變量存的就是地址。我們打印指針變量會出現(xiàn)指針變量的值也就是它存儲的地址,這就跟我們打印a會出現(xiàn)a存儲的值10一樣,而打印指針變量的地址則會出現(xiàn)存儲指針變量的地址,這二者并不沖突,大家也看到了在內(nèi)存中開辟的存儲指針變量的地址跟指針變量存儲的地址不一樣。
舉個例子吧,好比是你爸爸有你的手機(jī)號碼,而你有你女朋友的手機(jī)號碼?。
其二
我們使用*來訪問指針變量指向的地址所存儲的值。這就是我們所說的操作內(nèi)存,我們直接在地址上進(jìn)行值的修改。
看代碼
cout<<"我們來訪問我們的指針變量所存儲的地址的存儲的值為"<<*p<<endl; *p=89300; cout<<"修改a的值為"<<*p<<endl;cout<<"修改后的a的值"<<a<<endl;
大家看到了吧,我們使用*p直接就可以訪問指針變量指向的地址的存儲的值。我們修改這塊地址存儲的之后,這個變量a也就跟著修改了值。
這就是指針的妙用。
簡單來說就是,指針變量記錄著地址,指針變量就是一個地址,我們使用*來訪問地址的值并且修改那么原變量的值也會修改。
大聲喊出我是誰(作者狂喜中),接下來會更新一些數(shù)據(jù)結(jié)構(gòu)之類的東西,(當(dāng)然是使用c++實現(xiàn)或者c語言,如果時間允許的話)。主營業(yè)務(wù)Java算法,大家有啥Java算法競賽類的疑問歡迎私信。
?
?
?