gpt4 book ai didi

c - 指向数组的指针作为函数参数

转载 作者:太空狗 更新时间:2023-10-29 17:16:30 26 4
gpt4 key购买 nike

我写了一个函数,它接受一个指向数组的指针来初始化它的值:

#define FIXED_SIZE 256
int Foo(int *pArray[FIXED_SIZE])
{
/*...*/
}

//Call:

int array[FIXED_SIZE];
Foo(&array);

它不编译:

error C2664: 'Foo' : cannot convert parameter 1 from 'int (*__w64 )[256]' to 'int *[]'

但是,我把它一起破解了:

typedef int FixedArray[FIXED_SIZE];
int Foo(FixedArray *pArray)
{
/*...*/
}

//Call:

FixedArray array;
Foo(&array);

而且它有效。我在第一个定义中缺少什么?我认为这两者是等价的......

最佳答案

int Foo(int *pArray[FIXED_SIZE])
{
/*...*/
}

在第一种情况下,pArray 是一个指针数组,而不是指向数组的指针

您需要括号才能使用指向数组的指针:

int Foo(int (*pArray)[FIXED_SIZE])

您可以通过 typedef 免费获得它(因为它已经是一种类型,所以 * 具有不同的含义)。换句话说,typedef 带有自己的括号。

注意:经验表明,在 99% 的情况下,有人使用指向数组的指针,他们实际上可以而且应该只使用指向第一个元素的指针

关于c - 指向数组的指针作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9743829/

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