关于二重指针的问题
int main()
{
int tab[8]={3,4,2,6,7,9};
int tab2[3][4]={3,4,2,6,7,9};
cout<<*(tab+3)<<endl;
cout<<tab[5]<<endl;
cout<<*(&tab[6])<<endl;
cout<<*(*(tab2+1))<<endl;
cout<<*(&tab2[0][0]+1)<<endl;
cout<<*(tab2+1)<<endl;
cout<<&tab2[1][0]<<endl;
}
result:
6
9
0
7
4
0x7fff5fbff7e0
0x7fff5fbff7e0
关于指针的小练习,我不太明白二维数组情况下的指针是怎么处理的,第一个粗体的二重指针我完全看不懂。。。第二个粗体tab2+1指的是不是二维数组的第二行?如果是的话,输出结果为什么不是一行共4个数??
求解释。。谢谢
[解决办法]
是的,就是从7开始的那一行,你如果这样初始化会比较好阅读
int tab2[3][4]={ {3,4,2,6},
{7,9} }; //请尽量让自己的代码容易阅读
因为他不是一个OBJECT,他表示的只是一个位置
你可以这样想像
tab2[3][4]
tab2[0] --> 3, 4, 2, 6
tabs[1] --> 7, 9, ?, ?
tabs[2] --> ?, ?, ?, ?
tabs[3] --> ?, ?, ?, ?
那个-->只是指向第一个位置而已
这是我的理解,有错欢迎指正
至于第一个则代表
cout<<*(*(tab2+1))<<endl;
*(tab2+1) == 取出tab2[1]的位置,也就是7所在的位置
*(*(tab2+1)) == dereference这个位置的资料