指標和陣列名(指標訪問陣列)以及二級指標

2021-09-27 01:18:56 字數 1038 閱讀 8813

既然可以把陣列名當成位址存放到乙個指標中,我們使用指標來訪問乙個就成為可能。

讓我們看下面**:

#include#includeint main()

; int *p = arr;//指標存放首元素的位址

所以 p+i 其實計算的是陣列 arr 下標為i的位址。那我們可以直接通過指標來訪問陣列。

如下:

#include#includeint main()

; int *p = arr;//指標存放首元素的位址

int sz = sizeof(arr) / sizeof(arr[0]);

for (int i = 0; i < sz; i++)

system("pause");

return 0;

}

指標變數也是變數,是變數就有位址,那指標變數的位址存放在**? 這就是二級指標 。

int a = 10;

int *pa = &a;

int **ppa = &pa;//二級指標

對於二級指標的運算有:

int b = 20;

*ppa = &b;//等價於 pa = &b;

**ppa = 30;

//等價於*pa = 30;

//等價於a = 30;

指標和陣列名

想要清楚的知道指標和陣列的本質區別還有處理方式,感覺繞不開看編譯器是如何處理的了,有時間可以上知乎搜搜有什麼編譯類的書籍,或者找個懂編譯的大神,在網上看到有一篇從編譯器角度剖析陣列名的,有所幫助,雖然沒有說到足夠深入讓我理解指標和陣列真正的本質是什麼 本文只是稍微說明一下自己的猜測和理解,可能存在有...

指標和陣列名

在學習c語言指標時候,老師告訴我們,陣列名就是指標,指向陣列首元素的位址。有如下 int main int argc,const char argv printf arr p n arr printf arr 1 p n arr 1 printf lu n sizeof arr printf n p...

陣列名和陣列名取位址 指標陣列和陣列指標的區別

一,首先我們先分析下陣列名和陣列名取位址的區別。我們都知道陣列名是陣列的首位址,然而對陣列名取位址又是什麼那?看下面一段程式你就會懂的。分析 由執行結果可知,陣列名a和 a的記憶體位址相同,我們已經知道a a 0 所以有a 1指向陣列中下乙個元素 即為在首位址2751180基礎上加int的位元組數4...