既然可以把陣列名當成位址存放到乙個指標中,我們使用指標來訪問乙個就成為可能。
讓我們看下面**:
#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...