輸入
#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...