我想创建(某种类型)"别名"到C中的结构对象。
根据变量,a
应为x
或y
。但它不应该被复制,它需要是对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!
}
代码是双向搜索的一部分。一个线程应该从头开始并搜索结束,另一个应该从结束开始并搜索开始。
另一方面,我可以用开始和结束调用一个函数(并反转)。但是在这里,我需要传递结构作为参考。 如果可能,我想使用第一个想法!
答案 0 :(得分:1)
在C中,使用指针引用变量:
node *localstart;
if (myid == 0) {
// start correct way
localstart = &start;
}
else {
// start reversed way
localstart = &end;
}
(*localstart)->dist = 0;
根据你对node
的使用,很明显它实际上是一个指向结构的指针,所以现在你有一个指向指针的指针。对于C编译器来说不是问题,它甚至可以在某些情况下优化掉指针变量。只是不要忘记括号!