前者我有一个函数f(double *a),它得到一个要处理的数组。为了得到它应该在数组上工作的正确位置,它被称为f(a+offset),其中offset是一个整数。现在我重新编写了代码,并定义了一个自定义结构:

typedef struct{
double *a;
} struName;

函数变为f(struName *a)。现在我想知道我如何仍然可以得到函数的偏移量,而不必创建一个新的临时struct或将函数从f(struName *a)更改为f(struName *a, int offset)。有可能吗?

最佳答案

不更改结构的内容或调用未定义的行为是不可能的。
如果您有权访问ISO C99,则可以更改签名以接受structby值,并传入一个复合文本:

f((struct struName){ .a = myStruct.a + offset });

否则,您提出的具有不同参数的解决方案应该可以正常工作:
f(myStruct, offset);

10-05 18:11