前者我有一个函数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,则可以更改签名以接受struct
by值,并传入一个复合文本:
f((struct struName){ .a = myStruct.a + offset });
否则,您提出的具有不同参数的解决方案应该可以正常工作:
f(myStruct, offset);