我必须遵循C代码:
a.b[(c+d(e,f,g)**i)]->j<-k
现在我必须添加代码才能进行编译。
其中大部分都不是问题,但真正让我烦恼的是d(e,f,g)**i
部分。我理解**i
是指向指针的指针,但我不知道如何在函数调用后直接处理它。
答案 0 :(得分:2)
打破它:
d(e,f,g)**i
FunctionCall d with params e,f,g
Multiplied by
pointer-dereferce of i
或者:
d (e,f,g) * (*i)
Func. Params Multiply value-stored-at-pointer
答案 1 :(得分:0)
这是相对可怕的。让我们从内到外工作,并在我们处理它们时删除它们:
d是具有3个参数的函数。让我们假设它可以返回一个int,如果它不能,我们将在稍后处理:
int e, f, g;
int d(int, int, int);
d(e,f,g) * *i
会没问题。
int *i;
c + d(e,f,g) * *i
就可以了。
int c;
所以现在我们已完成括号内部。我们还希望它是一个整数,以便它可以作为数组表示法。所以我们在那里很好。让我们在没有我们解决的一些问题的情况下重写问题。
a.b[<some integer>]->j < -k
我们可以很容易地做正确的事。
int k;
这部分很难用语言表达,但我只是走这些类型。 b
是双星,因为它使用数组括号后跟 - &gt;登录。
struct {
struct {
int j;
} **b;
} a;
#include <stdlib.h>
int main() {
int e, f, g;
int d(int e, int f, int g);
int *i;
int c;
int k;
struct {
struct {
int j;
} **b;
} a;
a.b[(c+d(e,f,g)**i)]->j<-k;
}
答案 2 :(得分:0)
简单足够
d(e,f,g) * *i // where d(e,f,g) is a function which should return a value and
*i is a pointer value
Eg if function d(e,f,g) returns 10 and if *i=5 then then output will be 10*5 = 50