<Router history={ browserHistory }>
<Route path="/" component={ MainApp }>
<IndexRoute component={ LandingPage } onEnter={ redirectIfLoggedIn } />
<Route path="verify/:mode/:oobCode" component={ LandingPage } onEnter={ redirectIfVerified } />
// other routes
</Route>
</Router>
如果可能的话。 什么是原因错误? 我该如何修复代码?
答案 0 :(得分:3)
这样你最终改变了本地指针的值,你需要从&
传递指向指针(main
)的指针并使用解除引用运算符(*
)在功能中:
#include <stdio.h>
void f(int **p) {
static int data = 5;
*p = &data;
}
int main(void) {
int *ip = NULL;
f(&ip);
printf("%d\n", *ip);
return 0;
}
但通常我们更喜欢使用相同级别的间接返回函数的地址,这更容易阅读(至少对我而言):
#include <stdio.h>
int *f(void) {
static int data = 5;
return &data;
}
int main(void) {
int *ip = f();
printf("%d\n", *ip);
return 0;
}
答案 1 :(得分:1)
您必须将指针传递给指针才能更改实际指针的值:
void some_fun(int **p)
{
static int i = 10;
*p = &i;
}
话虽如此,但这并不一定是可取的。我能想到的唯一直接用途是在第一次使用之前延迟执行全局初始化。