Can something similar to &x=&y be accomplished in C
Tom St Denis
tstdenis@ellipticsemi.com
Wed Aug 29 12:41:00 GMT 2007
Jim Stapleton wrote:
> Lets say I'm iterating through an array, and I have a lot of
> operations on the array needed to alter it...
>
> int p = {1, 2,3,4 ...};
> for(int i = 0; i < length_of_p; i++)
> {
> some_op(p+i);
> }
>
> void some_op(int *t)
> {
> /*do stuff with/to t*/
> }
>
> In C++ I could simply do int &t in the function, and it'd be fine, but
> in C I have to use a pointer, which means a lot of dereferencing. Is
> there any way to efficiently have the same effect as &x = &y (having a
> variable "be" another variable, rather than just point to it) in plain
> C with GCC, or is that out of the question?
>
You could always use define macros, e.g.
void somefunc(int *pX)
{
#define X *pX
X *= 3; X += 4; X whatever ...;
#undef X
}
But I would recommend against that as it makes the code harder to read
in the long run (imagine having 12 parameters + 15 locals + structs from
various header files + etc).
Tom
More information about the Gcc-help
mailing list