【发布时间】:2012-03-13 21:20:51
【问题描述】:
代码是:
int main(int argc, const char* argv[] )
{
struct node * initialpointer=NULL;
insert("asd", initialpointer, 1);
if(initialpointer!=NULL)
printf("isnotnull");
if (initialpointer==NULL)
printf("isnull");
}
insert(char* x,struct node * initialpointer, int numberofelements){
struct node B;
B.word = x;
B.parent = NULL;
B.leftchild = NULL;
B.rightchild = NULL;
printf("%d", 12);
if ( initialpointer == NULL){
initialpointer = &B;
B.parent = NULL;
}
}
所以最后我希望initialpointer 指出 nde B 所在的位置,但在 main 方法中它打印为 null。那么如何永久更改函数插入中的initialpointer?
【问题讨论】:
-
B在函数退出时被删除。你应该为你的initialpointer节点分配内存(malloc)。 -
你能去掉你代码中所有不相关的部分吗?
numberofelements值似乎与问题无关,例如,与parent/leftchild/rightchild值有关。 -
这些方法比它们看起来的要复杂。我已经剪掉了不相关的部分。但我不想改变函数和函数调用的结构。
标签: c pointers pass-by-value