一、指針數組
可以理解爲指針的數組,即元素爲指針的數組
請看如下幾組例子:
char *p = "abc";
char *q = "kk";
char *a[] = {p,q}; //指針數組
cout << "a爲: "<<a << endl;
cout << "*a爲: " << *a << endl;
cout << "a+1爲: " << a + 1 << endl;
cout << "*(a+1)爲: " << *(a + 1) << endl;
cout << "*a+1爲: " << *a + 1 << endl;
結果爲:
關於a的初始化:
char *p, *q;
char *a[] = {p,q}; //不能通過編譯
p="abc";
q="kk";
因爲上面例子中指針數組中的元素p和q未被初始化,不能通過編譯.
關於a的賦值:
char *p = "abc";
char *q = "kk";
char *r = "rr";
char *a[] = {p,q}; //指針數組
*a=r; //正確的賦值操作,等同於將r賦給p 等同於 a[0]=r;
*(a+1)=r; //給a的第二個元素賦值 等同於a[1]=r;
a的大小sizeof(a) = 元素個數 * 地址長度(32位爲4,64位爲8)
二、數組指針
數組指針,即指向數組的指針,常用於指向二維數組
如下代碼:
#include <iostream>
using namespace std;
int main()
{
int a[2][6] = { { 1, 2, 3, 4, 5, 6 }, { 11, 12, 13, 14, 15, 16 } };
int(*p)[6] = a;
cout << "p的大小爲:" << sizeof(p) << endl;
cout << "**p爲:" << **p << endl; //首個元素的值
cout << "*p爲:" << *p << endl; //首個元素的地址
cout << "p[0]爲:" << p[0] << endl;//首個元素的地址
cout << "p爲:" << p<< endl; //首個元素的地址
cout << "a[0][1]元素表示爲*(*p+1) :" << *(*p + 1) << endl;
cout << "a[0][1]元素表示爲*(p[0]+1) :" << *(*p + 1) << endl;
cout << "a[1][0]元素表示爲**(p+1) :" << **(p + 1) << endl;
cout << "a[1][0]元素表示爲*(p[1]) :" << *(p[1]) << endl;
system("pause");
}
執行結果如下: