我发现了使用双指针作为函数参数的一段代码。 看起来像下面的
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类型的指针可以用作数组/向量
非常感谢!