一咧叭、內(nèi)存與指針
**內(nèi)存是以字節(jié)為單位進(jìn)行編址的,內(nèi)存中的每個(gè)字節(jié)都對(duì)應(yīng)一個(gè)地址吉挣,通過(guò)地址才能找到每個(gè)字節(jié)喉钢。而我們常說(shuō)的變量肠虽,變量的內(nèi)存地址就是變量的指針舔痕。切記疚鲤,指針是有類型地址常量。
**
內(nèi)存的快捷方式——指針
定義指針變量的一般形式:
type * variable (指向數(shù)據(jù)類型 *指針變量名)
二、指針變量
- 重點(diǎn)就是區(qū)分一下下面的本質(zhì)區(qū)別:
在int var中; var呛牲、&var、var 者的區(qū)別途事?
var——指針變量
&var——對(duì)指針變量取地址
*var——取指針變量地址所指向地址的內(nèi)容 - 給個(gè)例子:輸入兩個(gè)整數(shù)验懊,存儲(chǔ)在變量a和b中,當(dāng)a小于b時(shí)尸变,使用指針交換a和b并輸出义图。
這時(shí)大腦要有邏輯思想(以圖形的形式吧):
三召烂、指針的運(yùn)算
指針運(yùn)算的本質(zhì)是指針中存儲(chǔ)的地址的運(yùn)算碱工。
- eg:p+n、p-n、p++怕篷、p--历筝、++p和--p等,其中n是整數(shù)廊谓。
解釋:將指針p加上或者減去一個(gè)整數(shù)n梳猪,表示p向地址增加或減小的方向移動(dòng)n個(gè)元素單元,從而得到一個(gè)新的地址蒸痹,使能訪問(wèn)新地址中的數(shù)據(jù)春弥。每個(gè)數(shù)據(jù)單元的字節(jié)數(shù)取決于指針的數(shù)據(jù)類型。
#include<stdio.h>
int main(void)
{
char p = (char)0x1234; //十六進(jìn)制的地址
printf("%x\n",p);
printf("%x\n",p+2);
printf("%x\n",p+4);
return 0叠荠;
}
四匿沛、指針的一些基礎(chǔ)小結(jié)
- 指針變量的初始化問(wèn)題小結(jié):
指針變量在使用前必須要初始化,把一個(gè)具體的地址賦給它榛鼎,否則引用時(shí)會(huì)有副作用逃呼,如果不指向任何數(shù)據(jù)就賦“空值”NULL。 - 變量與指針變量:
變量的實(shí)質(zhì)是代表“內(nèi)存中的某個(gè)存儲(chǔ)單元”借帘。指針變量是用來(lái)存儲(chǔ)地址蜘渣,而一般變量是存儲(chǔ)數(shù)值的。指針變量可指向任何一種數(shù)據(jù)類型肺然,但不管它指向的數(shù)據(jù)占用了多少字節(jié)蔫缸,一個(gè)指針變量占用4個(gè)字節(jié)。 - 數(shù)組名與指針變量:
數(shù)組名是一個(gè)常量际起,不允許重新賦值拾碌。
指針變量是一個(gè)變量,可以重新賦值街望。