gpt4 book ai didi

c++ - 在 C++ 函数中传递参数时, "double a[]"和 "double *a"有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:37 24 4
gpt4 key购买 nike

在 C++ 函数中传递参数时,“double a[]”和“double *a”之间有什么区别(如果存在)?我的意思是,这两个功能是否相同?

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;
}

上面的代码没有错误。我只是对此感到好奇,我找不到“谷歌”它的方法,抱歉。

我将静态和动态数组作为参数传递给函数,其中一个使用“double a[]”,另一个使用“double *a”,一切都可以正常编译和执行。这只是风格问题吗?

最佳答案

在那种情况下,double a[]double *a 被定义为绝对的,100% 相同。这是一个 C++ 问题,但是一个 C FAQ仍然相关。


来自 C++11 标准:

8.3.5

After determining the type of each parameter, any parameter of type "array of T" or "function returning T" is adjusted to be "pointer to T" or "pointer to function returning T," respectively.

关于c++ - 在 C++ 函数中传递参数时, "double a[]"和 "double *a"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28016179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com