首先指標陣列 和陣列指標叫法本身是種誤導
指標陣列:
array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標
陣列指標:a pointerto an array,即指向陣列的指標
其次他們本質乙個是陣列,乙個是指標
int* a[4] 表示是乙個陣列
陣列a中的元素都為int型指標
元素表示:*a[i] *(a[i])是一樣的,因為優先順序高於*
int (*a)[4] 表示是乙個指標
指向陣列a的指標
元素表示:(*a)[i]
#include
using
namespace
std;
int
main()
;
int
*a[4];
//指標陣列
int
(*b)[4];
//陣列指標
b=&c;
//將陣列c中元素賦給陣列a
for
(
int
i=0;i<4;i++)
//輸出看下結果
cout<<*a[1]
}
///陣列名和陣列名取位址的區別
char a[20];
void *b,
char *c;
b=&a; //ok b可以指向任意型別的指標
雖然&a和a得記憶體位址相同
,但它們的意義不相同,它是代表整個陣列的,
它的高階單位是整個陣列的位元組長度
c=&a; //err &c返回的是乙個指向char陣列的指標, 而c是乙個指向char字串的指標
c=(char*)&a; //可以強轉
c=a; //ok 指向陣列的首元素的位址 即&a[0] 是乙個指向char元素的指標
a的型別是int[5]
陣列&a的型別是int(*)[5]
指標——指向int[5]陣列的指標
&a[0]的型別是int*
指標——指向int型別的指標
#include
int main()
結果 1244736
1244736
1244740
1244740
1244740
1244756
1244740
---------------204
陣列名和陣列名取位址
在c中,在幾乎所有使用陣列的表示式中,陣列名的值是個指標常量 也就是陣列第乙個元素的位址。它的型別取決於陣列元素的型別 如果它們是int型別,那麼陣列名的型別就是 指向int的常量指標 在以下兩種場合下,陣列名並不是用指標常量來表示,就是當陣列名作為sizeof操作符和單目操作符 的運算元時。siz...
陣列名和陣列名取位址
1 int a 10 2 int p a 3 int q 10 a 第二個為指向陣列的指標.a只是a 0 的位址,a 1就是a 1 的位址了,a是整個a 10 的首位址,是以整個陣列為角度來看,雖然它與a 0 的值相同,但是 a 1就已經增加了10個int型別的位元組的長度了.1 include 2...
陣列名和陣列名取位址 指標陣列和陣列指標的區別
一,首先我們先分析下陣列名和陣列名取位址的區別。我們都知道陣列名是陣列的首位址,然而對陣列名取位址又是什麼那?看下面一段程式你就會懂的。分析 由執行結果可知,陣列名a和 a的記憶體位址相同,我們已經知道a a 0 所以有a 1指向陣列中下乙個元素 即為在首位址2751180基礎上加int的位元組數4...