C ++这是如何工作的? (数组作为参数)

时间:2017-01-20 09:54:50

标签: c++ arrays parameters

所以在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...

所以我的问题是,我上面所说的是正确的吗?例如我怎么称呼这样的功能?

1 个答案:

答案 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.