我将解决第一个作为示例。
// Declarations we care about
int b, c;
int *p1;
char str[10];
// Function we need to figure out the signature of
r = foo(str, &p1, b * c);
我首先要弄清楚返回类型:
r =
告诉我所需的返回类型将是r
: 返回类型是float
. (显然没有考虑可能的隐式转换)
至今:float foo(?...);
然后我会计算参数的数量:str
, &p1
, b * c
. 是的,3 个参数。
至今:float foo(?, ?, ?);
第一个论点是str
。是什么类型的str
?它是char[]
,它衰变为char*
。
至今:float foo(char*, ?, ?);
第二个论点是&p1
。这意味着我们正在获取 的地址p1
。所以它必须是指向任何类型的指针p1
。p1
是一个int*
。我们的类型将是int**
.
至今:float foo(char*, int**, ?);
第三个论点是b * c
。b
并且c
是 类型int
。整数之间的乘法计算结果为int
。我们的类型将是int
.
至今:float foo(char*, int**, int);
而已!