#include<iostream>
using namespace std;ios
int main(){c++
//const char[12]類型的值不能用於初始化char [4]
//char array[3][4]={"hello world"};數組
char array[3][4]={'h','e','l','l','o'};
//*array輸出的結果是hello,即*array表示的是char*類型,而*array+1的輸出是ello
cout<<&array<<" "<<&array+1<<" "<<*array<<" "<<*array+1<<endl; //&array+1相比&array向後偏移了12個字節。spa
//c++中,char* 在全部的指針類型中比較特殊。
int arrayInt[3][4]={12,13,14,25,34,23,33};
cout<<arrayInt<<endl;
//輸出兩項結果相同,相比整個數組首地址偏移16個字節,說明單獨的二維數組名是一個int (*)[4]類型
//下面第一項是得到二維數組中第二個一維數組的地址,而第二項是得到第二個一維數組首元素的地址。???
//對數組指針引用如何理解
cout<<arrayInt+1<<" "<<*(arrayInt+1)<<endl;
//第二項的輸出說明&arrayInt表示的整個二維數組的長度。
//第三項的輸出與第一項的值相同,但意義不一樣,第一項表示的是整個數組的首地址,第三項表示的是數組首元素arrayInt[0]的地址,是一個int*
//第四項的值爲第3項的值向後偏移4個字節(1個元素)
//第五項先獲取二維數組中第二個一維數組的首地址,&arrayInt[1]的類型是int (*)[4],而後加1,
//地址相對於整個數組首地址偏移32個字節。(4*4+4*4)
//要理解第四項,記住*又稱爲解引用,*arrayInt以後表示arrayInt的第1個元素int*
//一維數組int a[],數組名*a表示所在地址基類型的值。二維數組中*(int(*)[])得到其中內層第一個數組。以後所有轉化到一維數組的範疇。
cout<<&arrayInt<<" "<<&arrayInt+1<<" "<<*arrayInt<<" "<<*arrayInt+1<<" "<<&arrayInt[1]+1<<endl;
//要理解二維數組的事情,類比一維數組進行理解。一維數組中&arr表示一個數組指針,arr表示int*
cout<<arrayInt[1]+1 <<endl; //偏移20,下標運算符獲取第N個元素,這裏是獲取2個元素,即一個一維數組,整個數組是用其首地址來表徵的。
getchar();
return 0;.net
}指針