双精度值的双指针

时间:2019-05-12 14:53:07

标签: c++ pointers

我发现了使用双指针作为函数参数的一段代码。 看起来像下面的

void func(double **a){
    double a1 = a[0][0];
    double a2 = a[0][1];
    ...
}

好像a是一个数组吗?但这只是一个指针,它如何像上面一样为a1 a2赋值? 我试图弄清楚此功能的工作原理。

首先,我编写以下代码进行测试。

void test2pointerA(double** para1){
    double a = para1[0][0];
    std::cout<<"2 pointer a is "<<a<<std::endl;
}

void test1pointerA(double* para1){
    double a = para1[0];
    std::cout<<"1 pointer a is "<<a<<std::endl;
}

int main(){
    double a1 = 10;
    double* p1 = &a1;
    double** p2 = &p1; 
    test2pointerA(p2);
    test1pointerA(p1);
}

运行上面的代码,我得到输出

2 pointer a is 10
1 pointer a is 10

好像对于双指针,para1[0][0]可以代表a1,对于单向指针para1[0]可以代表a1。 但是,我无法找到诸如para1 [0] [1]之类的东西给我有意义的价值。毕竟,a1是双精度型值,并且只能有1个值。它不是向量或数组,因此a1 [0],a1 [1],a1 [3]才有意义。 我希望有人可以帮助我弄清楚为什么double类型的指针可以用作数组/向量 非常感谢!

0 个答案:

没有答案