C语言中struct类型变量的别名

时间:2015-12-20 15:19:55

标签: c struct reference

我想创建(某种类型)"别名"到C中的结构对象。

根据变量,a应为xy。但它不应该被复制,它需要是对a - 对象的引用。

一些代码:

void search(node start, node end) {
    int myid = omp_get_thread_num();
    node localstart;
    if (myid == 0) {
        // start correct way
        localstart = start; // <-- how?!
    }
    else{
        // start reversed way
        localstart = end; // <-- how?!
    }
    // do something with localstart eg.:
    localstart->dist = 0;
    // now should 
    // start->dist == 0 or end->dist == 0 (based on myid)
    // be true!
}

代码是双向搜索的一部分。一个线程应该从头开始并搜索结束,另一个应该从结束开始并搜索开始。

另一方面,我可以用开始和结束调用一个函数(并反转)。但是在这里,我需要传递结构作为参考。 如果可能,我想使用第一个想法!

1 个答案:

答案 0 :(得分:1)

在C中,使用指针引用变量:

node *localstart;
if (myid == 0) {
    // start correct way
    localstart = &start;
}
else {
    // start reversed way
    localstart = &end;
}
(*localstart)->dist = 0;

根据你对node的使用,很明显它实际上是一个指向结构的指针,所以现在你有一个指向指针的指针。对于C编译器来说不是问题,它甚至可以在某些情况下优化掉指针变量。只是不要忘记括号!