修改后的问题陈述的更新答案
鉴于您在评论中所说的,没有必要将指针传递给数组。您可以简单地将指针传递给数组的第一个元素。这样的指针就足够了,因为数组的其余元素显然位于第一个元素之后。
要编写一个将指针设置为指向 的数组中的指针的函数char
,请执行以下操作:
void MyFunction(int NumberToSet, char *Pointers[])
{
for (int i = 0; i < NumberToSet; ++i)
{
Pointers[i] = SomeString;
}
}
在上面,SomeString
必须有类型“pointer to char
”。这可以是一个字符串,例如"Hello"
,或者一个数组char
(它会自动转换为指向 的指针char
),或者是某个x
已被声明为char *x
(并且已被初始化或分配)的标识符,例如。
要使用此函数,请像这样调用它:
char *MyArrayOfPointers[SomeNumber];
MyFunction(NumberOfPointersIWantToSet, MyArrayOfPointers);
原始答案
在大多数情况下,要传递指向函数的指针数组,char
只需传递第一个元素的地址即可。在这种情况下,您将使用其中任何一个(它们是等效的):
void myFunc(char **a)
void myFunc(char *a[])
如果你真的想传递数组的地址,你可以使用:
void myFunc(char *(*a)[])
在这种情况下,类型a
不完整,因为缺少维度。根据您打算使用的用途a
,您可能需要在声明中提供维度。
当调用myFunc
并传递一些声明为的数组时char *array[N];
,您将传递它,在前一种情况下,作为myFunc(array)
,在后一种情况下,作为myFunc(&array)
。