首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于二重指针的有关问题

2013-03-01 
关于二重指针的问题int main(){int tab[8]{3,4,2,6,7,9}int tab2[3][4]{3,4,2,6,7,9}cout*(tab+3)

关于二重指针的问题
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个数??
求解释。。谢谢
[解决办法]

引用:
第二个粗体tab2+1指的是不是二维数组的第二行?


是的,就是从7开始的那一行,你如果这样初始化会比较好阅读


 int tab2[3][4]={ {3,4,2,6}, 
                  {7,9} }; //请尽量让自己的代码容易阅读




引用:
输出结果为什么不是一行共4个数

因为他不是一个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这个位置的资料

热点排行