1 陣列名 位址 指標

2021-10-07 10:26:21 字數 1050 閱讀 6302

陣列名是陣列首個元素的位址

如果buf是乙個陣列,有以下語句成立:

buf = &buf[0] //陣列名是該陣列首個元素的位址

在c語言中,指標+1表示增加乙個儲存單元,對於陣列而言,位址+1後表示指向下乙個元素的位址,這也是為什麼宣告指標需要有型別的原因之一,只知道位址是不夠的,計算機要知道儲存物件需要多少位元組,也就是指標指向的變數,也要知道變數的型別。

#include

#include

#define size 4

intmain

(int argc,

char

const

*ar**)

return0;

}

執行結果

從執行結果,可以看出

short 型別的位址是遞增2 (因為short在計算機中占用2個位元組)

double型別的位址是遞增8 (因為double在計算機中占用8個位元組)

因此位址+1 表示的是增加乙個儲存單元,而非位元組+1

也就是指標+1,指標的值遞增它所指向型別的大小

1)上面列子中,還存在以下對應關係

a + 1 --> &a[1] // a是陣列名 也就是陣列首個元素位址 位址+1 ==> 指向下乙個元素,即 a[1]的位址

*(a + 2) --> a[2]

b + 1 --> &b[1] //b是陣列名 也就是陣列首個元素位址 位址+1 ==> 指向下乙個元素,即 b[1]的位址

*(b + 1) --> b[1]

要時刻銘記:

陣列名是陣列首個元素的位址

位址+1 表示增加乙個儲存單元,對應陣列 則表示指向下乙個元素

2)以下概念不要混淆

*(a + 2) //陣列a的第3個元素a[3]

*a + 2 //陣列第乙個元素的值+2

陣列名和陣列名位址。

先不說啥,上 看 分析。是在vs2015下編譯的,debug 選的64 位。所以乙個指標占用 8個位元組。int main int argc,char argv int ca 6 printf n printf 主函式 n printf n printf 1.ca d n ca printf 2.c...

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

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

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

一,首先我們先分析下陣列名和陣列名取位址的區別。我們都知道陣列名是陣列的首位址,然而對陣列名取位址又是什麼那?看下面一段程式你就會懂的。然而 a代表的不是取常量a的位址,而是取陣列的位址。雖然a和 a的記憶體位址相同,但是他們的意義不相同,前者僅代表陣列的首位址,後者代表整個陣列的,他的進價單位是整...