關(guān)于C語(yǔ)言指針

? ? ? 指針有函數(shù)指針比如:int *p(int,int),數(shù)組指針比如:int (*p)[n],和普通指針int *p。除此之外還有一個(gè)指針數(shù)組int *p[n]。

函數(shù)指針的用法:函數(shù)指針有兩個(gè)用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。

int add (int a, int b) {

? ? return a + b;

}

int sub (int a, int b) {

? ? return a - b;

}

int main()

{

? ? int (*fun)(int, int);

? ? fun = add;

? ? int result = fun(2, 1);

? ? cout << result << endl;

? ? fun? = sub;

? ? result = fun(2, 1);

? ? cout << result << endl;

? ? return 0;

//執(zhí)行結(jié)果

3 1

數(shù)組指針與指針數(shù)組的區(qū)別:

舉個(gè)例子說(shuō)明,如下:

int * a[5] 和 int (*a)[5]

可以看出的是,他們只相差一個(gè)括號(hào),由于存在優(yōu)先級(jí)的關(guān)系(( ) > [ ] > *),如果不加括號(hào),a會(huì)先與[ ]結(jié)合,加了括號(hào),a則先與*結(jié)合。加括號(hào)為的是改變運(yùn)算的結(jié)合順序。

int * a[5]沒(méi)有括號(hào),a先與[ ]結(jié)合,先是個(gè)數(shù)組;

int (*a)[5]加了括號(hào),a先和*結(jié)合,先是個(gè)指針。

故:

int * a[5]是指針數(shù)組,本質(zhì)上是一個(gè)數(shù)組,數(shù)組里存放的元素是指針,指針的類(lèi)型是int *型,指向一個(gè)整型數(shù)。

int (*a)[5]是數(shù)組指針,本質(zhì)上是一個(gè)指針,指針?biāo)笇?duì)象是一個(gè)數(shù)組,數(shù)組的類(lèi)型是int [5]型。

? ? ? ? 其實(shí),數(shù)組指針與指針數(shù)組兩個(gè)用的比較多的還是數(shù)組指針,并且多用于處理二維數(shù)組。

以上是我對(duì)C語(yǔ)言指針的認(rèn)識(shí)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容