C++ 将double数组绑定到double*&;

C++ 将double数组绑定到double*&;,c++,reference,C++,Reference,我正在尝试使用指针引用数组 double a[5]; double*& b = a; //doesn't compile double*& b = &a[0]; //doesn't compile either double*& b = &static_cast<double*>(a); //nope 双a[5]; 双*&b=a//不编译 双*&b=&a[0]//也不编译 双*&b=&static\U cast(a)//不 有没有办法使b绑

我正在尝试使用指针引用数组

double a[5];
double*& b = a; //doesn't compile
double*& b = &a[0]; //doesn't compile either
double*& b = &static_cast<double*>(a); //nope
双a[5];
双*&b=a//不编译
双*&b=&a[0]//也不编译
双*&b=&static\U cast(a)//不
有没有办法使b绑定到数组第一个元素的地址


谢谢

在该程序中,使用数组指针:

//#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
    int a[5] = {1,2,3,4,5};
    int b[5] = {6,7,8,9,10};
    int (*pa[4])[5] = {&a,&b,&a,&b};
    for(int i = 0; i < 4; i++)
    {
        for(int j = 0; j < 5; j++)
            cout<< (*pa[i])[j] << "
        cout<< "\n";
    }
    //_getch();
    cin.get();

}
输出为1。但在以前的程序中,而不是

int (*pa[4])[5] = {&a,&b,&a,&b};
不能写字

int (*pa[4])[5] = {a,b,a,b};

要使用指针引用数组,不需要任何东西 特别:

如果需要指向整个数组的指针,而不是指向 第一个要素是:

double (*b)[5] = &a;
,但这是非常不寻常的,并将极大地混淆任何读者

如果要引用整个数组(无指针):

这经常用作函数参数,但我从未见过 它在其他地方使用

如果希望引用指定第一个 元素,它必须是常量,因为转换的结果 (包括数组到指针的转换)是右值,并且 无法绑定到非常量引用:

double *const (&b) = a;
如果您确实需要指针的非常量引用, 您必须引入一个指针变量:

double* pa = a;
double* (&b) = pa;

正如其他人所说,您不需要指向指针的引用,只需使用指向double的指针即可

 double *b = a;
无法将
a
分配给指针引用的原因是,从double数组到指针到double的静默转换会导致右值

如果必须使用对指针的引用,则应将其设置为对常量指针的引用,常量引用可以绑定到右值:

double a[5];
double *  const &b = a;

您可以获得指向第一个元素的指针:

double * b = a;
或对指向它的未命名指针的
const
引用:

double * const & b = a;
或对数组的引用:

double (&b)[5] = a;

但是如果没有指针变量来引用,就无法得到指针的非常量引用。

为什么不直接使用
double*b=a双*b=a会将
b
指向
a
的第一个元素。。。请参阅以获取进一步的解释…或者,如果您不希望它可修改,请参阅
double*const b=a这是不可能的,我将在几分钟后添加上下文OK。。。在尝试键入问题的上下文后,我意识到我想做的没有意义。。。我想要的是绑定到第一个元素的指针,然后修改这个指针以指向一个新位置,这样每次我试图读取原始数组时,它都会读取到新位置。但这真的没有意义,因为我有一个普通数组,而不是一个指向数组的指针。。。谢谢你的回答!
double * b = a;
double * const & b = a;
double (&b)[5] = a;