#include<iostream>
using namespace std;
int main(){
char t[][2][4]={"abc","cde","efg","ghi"};
char s[ ][6]={"shdjj"};
char *p;
p=*s;
cout<<t<<" "<<t+1<<endl;
cout<<*t<<" "<<*t+1<<endl;
cout<<&t<<" "<<&t+1<<endl;
cout<<t[1][0]<<" "<<&t[1][0]<<endl;
cout<<t[0][1]<<" "<<&t[0][1]<<endl;
cout<<t+1<<" "<<*(t+1)<<" "<<**(t+1)<<endl;
cout<<**t<<" "<<**t+1;
}
0x6ffe00 0x6ffe08
0x6ffe00 0x6ffe04
0x6ffe00 0x6ffe10
efg 0x6ffe08
cde 0x6ffe04
0x6ffe08 0x6ffe08 efg
abc bc
通俗的理解嗨嗨嗨:t指的是第一行的首地址,t+1就变成第二行了
*t指的是第一个的首地址,*t+1就变成第二个嘞;
&t相当于取的是这个数组的首地址,&t+1就变成数组后面一个空间的首地址嘞
然后char数组和string一样,输出整个字符串(**t)
trytrytry
int aa[2][5]={1,2,3,4,5,6,7,8,9,10};
//cout<<&aa<<" "<<(&aa+1)<<" "<<aa<<" "<<*aa<<" "<<**aa<<endl;
int *b1=(int *)(&aa+1);//给aa加&,因为aa是二级指针,加&变为三级指针,可以借鉴三维数组指针看
int *b2=(int *)(*(aa+1));//普通二维指针加一
// cout<<aa+1<<" "<<*(aa+1)<<endl;
//cout<<b1-1<<" "<<b2<<endl;
cout<<*(b1-1)<<" "<<*(b2-1)<<endl;
//输出10, 5