#include<iostream>
using namespace std;
int main()
{
char str[][4]={{1,2,3,4},{5,6,7,8}};
char *pc1 = (char *)(&str+1);
char *pc2 = (char *)(&str[0]+1);
char *pc3 = (char *)(str+1);
char c1 = *(pc1-1);
char c2 = *(pc2-1);
char c3 = *(pc3-1);
cout<<"c1="<<(int)c1<<endl;
cout<<"c2="<<(int)c2<<endl;
cout<<"c3="<<(int)c3<<endl;
getchar();
return 0;
}
输出为8,4,4
二维数组可以看做特殊的一维数组,如上数组可以看成2个元素,第0个元素是{1,2,3,4,},第1个元素是{5,6,7,8}
那么&str表示整个数组的地址;
str表示数组第一个元素的地址(第0个元素);
&str[0]表示第一行的地址。