【发布时间】:2011-11-30 21:46:38
【问题描述】:
我声明了一个固定大小的数组:
int vals[25];
我想将数组发送到一个函数,该函数将分配 vals 的值:
bool FetchValueArray(char* source, char* name, char* typeFormat, int count, void** destination)
{
int i;
char *t;
t=strstr(source,name);
if (t)
if (destination != NULL)
{
for (i = 0;i < count;i++)
sscanf(t,typeFormat,destination[i]);
return true;
}
return false;
}
这基本上会在某个搜索字符串之后读取所有内容。例如:
FetchValueArray(source,"CONFIG=","%d",15,vals);
其中“CONFIG=”是纯文本,后跟 15 个制表符分隔的数值。
这里有一些关于间接和固定 aized 数组的事情我离 grokking 还很远,因此我想知道是否可以将固定大小的数组作为 void** 的参数发送(即使相信数组的大小会得到尊重。不同的问题。)
tl;dr 版本
int vals[25];
bool foo(int size,void** d);
foo(25,vals);
为什么不允许这样做?
【问题讨论】:
-
数组在传递给函数时衰减为指针。是的,您可以将其命名为
void*。我不知道你为什么要改用void**。
标签: c void-pointers indirection multiple-indirection