В чем разница, если она существует, между «double a []» и «double * a» при передаче аргументов в C++-функциях? Я имею в виду, эти две функции одинаково похожи?В чем разница между «double a []» и «double * a» при передаче аргументов в C++-функциях?
void do_somethingA (double a[], size_t size_a)
{
// ... do something
}
void do_somethingB (double *a, size_t size_a)
{
// ... do something
}
int main()
{
double X[] = {1.,2.,3.,4.,5.};
double *Y;
Y = new double[5];
for(int i = 0; i < 5; i++)
Y[i] = (double) i;
do_somethingA(X,5);
do_somethingA(Y,5);
do_somethingB(X,5);
do_somethingB(Y,5);
delete [] Y;
}
Ошибка приведенного кода. Мне просто интересно об этом, и я не мог найти способ «google», извините.
Я передаю как статические, так и динамические массивы в качестве аргументов для функций, из которых используется «double a []», а другой использует «double * a», и все компилируется и выполняется отлично. Это только вопрос стиля?
на самом деле тот же. Когда вы передаете массив функции в качестве параметра, то, что вы действительно передаете, является адресом первого элемента массива, который является синонимом a или a [0]. – blade
@blade нет, если вы передадите его по ссылке – vsoftco