C++ C++;这是怎么回事?(数组作为参数)
所以在IDA中我找到了这样一个函数C++ C++;这是怎么回事?(数组作为参数),c++,arrays,parameters,C++,Arrays,Parameters,所以在IDA中我找到了这样一个函数 struct exampleStruct { int a, b, c; }; void example(exampleStruct *(*exampleList)[3]) { //blah blah } exampleStruct forCall[3]; example(&forCall); 这就是让我困惑的部分*(*示例列表)[3]) 从仅仅看它,我会想象我会像这样调用函数 struct exampleStruct {
struct exampleStruct {
int a, b, c;
};
void example(exampleStruct *(*exampleList)[3])
{
//blah blah
}
exampleStruct forCall[3];
example(&forCall);
这就是让我困惑的部分*(*示例列表)[3])
从仅仅看它,我会想象我会像这样调用函数
struct exampleStruct {
int a, b, c;
};
void example(exampleStruct *(*exampleList)[3])
{
//blah blah
}
exampleStruct forCall[3];
example(&forCall);
然后在调用它之后,我会想象我可以像这样获取值
//forCall[0].a
//forCall[2].c
//etc...
所以我的问题是,我上面说的对吗?e、 g.我是这样调用函数的吗?如果要将exampleStruct数组传递给example,那么exampleStruct将如下所示:
void examplefoo(examplestruct somename[]) {
allnames[0].a += 1;
}
examplefoo(allnames);
或:
基本上两者都是相同的:给函数一个指向数组第一个元素的指针
此函数将获取数组的第一个元素,并将其.a增加1。让我们看看如何调用这个函数
首先,您必须创建examplestruct的数组,例如:
examplestruct somename;
somename.a = 1;
somename.b = 2;
somename.c = 3;
examplestruct othername;
othername.a = 7;
othername.b = 8;
othername.b = 9;
examplestruct allnames[2] = {somename, othername};
并按如下方式调用函数:
void examplefoo(examplestruct somename[]) {
allnames[0].a += 1;
}
examplefoo(allnames);
如果您随后打印allnames[0].a,您将看到它的值现在是2。我不确定,但请尝试。
examplestuct*(*exampleList)[3]
它是structexamplestuct
的3个指针数组上的指针。也许您应该删除outter星号以使代码一致。