陣列的名字是個位址常量

2021-10-01 13:33:03 字數 865 閱讀 2660

輸入

#include

intmain()

;int

* p = a;

printf

("%p\n"

, a)

;printf

("%p\n"

, a[0]

);printf

("%p\n"

,&a[0]

);printf

("%p\n"

,&a)

;printf

("%p\n"

,*a)

;printf

("%d\n"

,a[0])

;printf

("%d\n",*

(a[0])

);printf

("%d"

,*p)

;return0;

}

輸出

00b5fb54

00b5fb54

00b5fb54

00b5fb54

00b5fb54

1192635622

&a,a,*a,a[0]和&a[0]雖都指向的是陣列的首位址,但是他們可以被分為三類。&a是站在整個二維陣列高度的,a和&a[0]是站在行的高度,*a和a[0]是站在元素的高度。

它們在+1後就不一樣了。+1的時候:&a+1會跳過整個陣列;a+1和&a[0]+1跳過一行;*a+1與a[0]+1跳過乙個元素

a與a[0]都是位址常量,但可以認為,a的層次比a[0]的高,就好像a[0]與a[0][0]的關係,又或者可以將二維陣列理解成兩個一維陣列(a與a[0];a[0]與a[0][0])的巢狀,只不過作為a的元素a[0]是乙個位址常量,也就是位址本身。

形參中的陣列傳遞的是陣列的首位址

形參中的陣列傳遞的是陣列的首位址,如果函式體要使用陣列的長度,需要用另乙個形參傳遞,當要用到傳遞的陣列的元素時,要重新建乙個陣列,並將原陣列的值拷貝過去,如下 void fun int a int len int b int malloc sizeof int len memcpy b,a,len ...

陣列與陣列的位址

問題 int ia 2 cout ia 執行結果如下 0012ff38 0012ff38 我想問一下,如果說ia是的值是陣列第乙個元素的位址,即 ia 0 那麼ia作為乙個變數也應該有乙個位址,這個位址的值為什麼也是和 ia 0 一樣呢?如果說 ia ia 0 a 0 1 因為 ia的值和 ia 0...

PHP中定義陣列常量(array常量)的方法

在php中,我們不能用const直接定義陣列常量,但是const可以定義字串常量,結合eval 函式使字串常量能執行。所以,我們可以用定義字串常量的方式來返回乙個陣列常量。程式設計客棧下面就是我們來見證奇蹟的時刻!複製 www.cppcns.com如下 class test t new test p...