数组指针与指针数组辨析。菜鸟也能看懂(毕竟是菜鸟写的)

//    定义两个vector
    vector<int> fib = {1, 2, 3};
    vector<int> lucas = {2, 4, 6};

//    数组指针:指向数组的指针
    vector<int>* pv = nullptr;
    pv = &fib;
    //    凡是调用指针之前,都应该检验pv是否为空
    if(pv && pv->empty()){
//    查看数组指针是否work。先访问到vector, 再用[]访问vector的元素。
        cout << (*pv)[0] << endl;
    }

//    指针数组:装着指针的数组。前面指定vector内的元素的类型,后面的[]表示这个是一个数组
    vector<int>* seq_add[2] = {
            &fib, &lucas
    };

//    从上面可以看到。指针数字和数组指针的重要差别在于是否有括号。
//    这一直是一个令初学者头疼的问题。
//    先访问到数组指针。第一个[0]表示访问到数组指针的第一个元素,其是一个地址。得到一个vector,
    // 第二个[0]表示访问fib的第一个元素。
    cout << (*seq_add)[0][0] << endl;

    cout << seq_add[0] << endl;
    cout << *seq_add << endl;


posted @ 2018-06-11 17:46  一条图图犬  阅读(498)  评论(0编辑  收藏  举报