gpt4 book ai didi

c - 调用函数时如何使用指针

转载 作者:行者123 更新时间:2023-11-30 14:53:02 26 4
gpt4 key购买 nike

我在用 C 语言编程时遇到一些问题。我有一个结构,类似于

 typedef struct Hash_Funct{
char* name;
Var_Table * List_of_Variables; ///pointer to list of variables
} Hash_Funct;

在代码的某些点,我想用以下方式初始化结构:

    Hash_Funct tmp = (Hash_Funct*) malloc(sizeof(Hash_Funct));
tmp->name=name;
Init_ID_Table(tmp->List_of_Variables);

其中Init_ID_Table();定义为:

void Init_ID_Table(Var_Table *table){
table = (Var_Table*) malloc ( sizeof(Var_Table) );
for(int i=0; i< SIZE;i++){
(*table)[i] = NULL;
}
}

但是,在这段代码的末尾,Init_ID_Table() 似乎对 List_of_Variables 指针没有任何影响(该指针现在应该指向大小为 SIZE 的表,并将其所有元素设置为 NULL)。如果不告诉我如何将其更改为按预期工作,至少有人可以告诉我发生了什么吗?

非常感谢,亚当

最佳答案

变量是按值传递的,在函数中赋值给参数变量对调用者的变量没有影响。

您需要传递一个指向结构成员的指针,并间接通过它来修改调用者的变量。

void Init_ID_Table(Var_Table **table) {
Var_Table *temp_table = malloc ( sizeof(Var_Table) );
for (int i = 0; i < SIZE; i++) {
temp_table[i] = NULL;
}
*table = temp_table;
}

那么你可以这样调用它:

Init_ID_Table(&(tmp->List_Of_Variables));

关于c - 调用函数时如何使用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47446473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com