gpt4 book ai didi

c++ - 指针参数和数组参数有区别吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:49 26 4
gpt4 key购买 nike

void 方法(double *v)

void 方法(double v[5])

这两者有什么区别吗?

第二个是否更具体,如 v 中的长度被限制为 5 个元素?

最佳答案

当声明为参数类型时,数组会退化为指针类型。在你的例子中,

void method(double v[5]);

这里 5 根本没有任何作用,它是如此的微不足道以至于你可以完全省略它,而是写成这个:

void method(double v[]);

这与前面的声明完全相同。由于衰减成指针,所以上面两个完全一样:

void method(double *v); //because array decays to pointer, anyway

也就是说,以下都是同一个函数的声明:

void method(double v[5]); //ok : declaration 
void method(double v[]); //ok : redeclaration of the above
void method(double *v); //ok : redeclaration of the above

所有的都完全一样。完全没有区别。

请注意,以下是不同的:

void f(double (&v)[5]); 

它声明了一个函数,该函数可以接受大小为 exactly 5 的 double 组。如果你传递任何其他大小的数组(或者如果你传递指针),它会给出编译错误!

关于c++ - 指针参数和数组参数有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22437809/

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