注册 登录
编程论坛 C++教室

又问一个小白问题。。

哒哒哒啦啦啦 发布于 2016-03-21 21:42, 2813 次点击
#include <iostream>
#include<string>
using std::cout;
using std::begin;
using std::endl;
using std::end;

int main()

{
    int ia[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
    for (auto p = begin(ia); p < ia + 3; ++p)
        for (auto q = begin(*p); q<*p+4; ++q)      //q<*p+4,为啥p前必须加*??感觉都是指针不应该加啊。。。。
        {
            cout << *q << " ";
        }
    return 0;
}
4 回复
#2
rjsp2016-03-22 08:58
p 的类型是 int (*)[4]
还是多看书多思考吧
#3
牧羊人942016-03-22 11:01
p是数组指针,如果p指向第0行,那么p+1就指向第1行的首地址,而不是第0行的第1个元素的地址。
所以,*(p+i)+j或者p[i]+j就是指向第i行第j列元素啦。二维数组名a本身就是一个指向数组的指针,
而a+i得到的是行数组a[i]的地址&a[i],也就是行地址。
#4
哒哒哒啦啦啦2016-03-23 21:21
回复 2楼 rjsp
哎呀 新手小白啊。。
#5
哒哒哒啦啦啦2016-03-23 21:21
回复 3楼 牧羊人94
非常详尽 谢谢~~
1