gpt4 book ai didi

c++按值或指向函数语法的指针传递数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:42:03 25 4
gpt4 key购买 nike

有人可以解释一下下面这两个函数声明之间的区别吗?据我所知,aDecay() 接受一个指针作为参数,如果你有一个整数 int a[5] 你可以调用 aDecay(a)aDecay(&a[0] 因为数组衰减为指针。

现在,如果我想调用 pDecay(),我必须使用 pDecay(&a)

pDecay 如何强制您使用 &

void aDecay(int *p)
void pDecay(int (*p)[7])

最佳答案

使用普通 a(或其等价的 &a[0]),您有一个指向数组中单个元素 的指针。单个元素的类型为 int,因此指向它的指针必须为 int*

如果你有一个指向实际数组的指针,就像你用 &a 得到的那样,你就不再有一个指向单个 int 元素的指针,而是指向整个数组的指针。数组的类型是int[5],指向它的指针是int(*)[5]

另请注意,在两种情况下,您都按值传递数组。您按值传递一个指针

关于c++按值或指向函数语法的指针传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47926980/

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