所以在IDA中找到了一个像这样的函数
struct exampleStruct {
int a, b, c;
};
void example(exampleStruct *(*exampleList)[3])
{
//blah blah
}
所以这是让我感到困惑的部分*(*exampleList)[3])
只是看着它我会想象我会像这样调用这个函数
exampleStruct forCall[3];
example(&forCall);
然后在它被调用之后我会想象我可以获取像这样的值
//forCall[0].a
//forCall[2].c
//etc...
所以我的问题是,我上面所说的是正确的吗?例如我怎么称呼这样的功能?
答案 0 :(得分:0)
如果你想将一个exampleStruct数组传递给example,那么后者会这样:
string_
或:
void examplefoo(examplestruct somename[]) {
allnames[0].a += 1;
}
基本上两者都是相同的:你给函数一个指向你数组的第一个元素的指针。
此函数将获取数组的第一个元素并将其.a增加1.让我们看看如何调用此函数。
首先,您必须创建exampletruct数组,例如:
void examplefoo(examplestruct* somename) {
allnames[0].a += 1;
}
并调用这样的函数:
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};
如果您打印所有名称[0] .a,您将看到它的值现在为2.