我将解决第一个作为示例。
// 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);
而已!