c語言指針的基本概念
關(guān)于指針的基本概念,我就不詳細介紹了,因為有許多書都介紹的很詳細。這里我只介紹一部分。指針指向一個地址,而指針本身在大多數(shù)系統(tǒng)上都是一個無符號整數(shù)(在32bit機上是4byte,在64bit機上是8byte)。
下面用一個例子來說明其機制:
在上面的例子中,先定義了一個指針p,它的類型是int,也就是說它只能指向一個int型的變量,而不能指向其他類型的變量。最后我們將a變量的地址賦給p。在這個過程中,涉及到兩個內(nèi)存塊,一個是存放指針p的內(nèi)存(用&p可得到內(nèi)存地址),一個是存放a的值的內(nèi)存塊(用&a可以得到內(nèi)存地址)。而第一個內(nèi)存存的p的值經(jīng)過賦值語句后也就是&a的值了。另外一個注意點是, *(星號)和變量類型以及變量名之間可以有任意個空格,也可以沒有。比如下面三種方式都是一樣的:
int a = 10;
int *p; /pic/p>
p = &a; /pic/p>
在上面的例子中,先定義了一個指針p,它的類型是int,也就是說它只能指向一個int型的變量,而不能指向其他類型的變量。最后我們將a變量的地址賦給p。在這個過程中,涉及到兩個內(nèi)存塊,一個是存放指針p的內(nèi)存(用&p可得到內(nèi)存地址),一個是存放a的值的內(nèi)存塊(用&a可以得到內(nèi)存地址)。而第一個內(nèi)存存的p的值經(jīng)過賦值語句后也就是&a的值了。另外一個注意點是, *(星號)和變量類型以及變量名之間可以有任意個空格,也可以沒有。比如下面三種方式都是一樣的:
int* a;
int * a;
int *a;
解讀方法:
首先從標示符開始閱讀,然后往右讀,每遇到圓括號的右半邊就調(diào)轉(zhuǎn)閱讀方向。重復(fù)這個過程直到整個聲明解析完畢。需要注意的是,已經(jīng)讀過的部分在后續(xù)作為一個整體來看。
看下面一個例子:
int *a[3];
/pic/p>
/pic/p>
int (*a)[3]
/pic/p>
/pic/p>
/pic/p>
/pic/p>
int (*func)(int p);
/pic/p>
/pic/p>
/pic/p>
int (*func[3])(int p);
/pic/p>
/pic/p>
/pic/p>
【c語言指針的基本概念】相關(guān)文章:
C語言的指針12-21
C語言指針的傳遞03-17
C語言指針的總結(jié)08-21
C語言指針的概念02-25
對C語言指針的總結(jié)12-09
C語言指針教學(xué)02-10
C語言指針的用法11-15
什么是C語言中指針 C語言指針的基礎(chǔ)使用09-23
C語言指針用法詳解10-02