指向结构的指针被传递给函数

时间:2011-10-26 04:47:39

标签: c pointers persistence struct

这是我程序的精简版。我需要将一个指向结构指针的指针传递给一个函数,修改函数中的结构,并保持这些更改。函数声明必须保持不变。

目前我可以修改函数中的数据,但一旦返回main,就不会进行任何更改。

感谢您的帮助。

int main()
{
    struct node** HuffmanNodes;
    read_Huffman_encoded_data(&HuffmanNodes);
}

void read_Huffman_encoded_data(**HuffmanNodes)
{
    Huffman_node = (node**)malloc(sizeof(node*)*(*number_of_nodes));

    int index;
    for(index=0; index<*number_of_nodes;index++)
    {
        Huffman_node[index] = (node*)malloc(sizeof(node));
        Huffman_node[index]->first_value=1;
        Huffman_node[index]->second_value=2;
    }
}

2 个答案:

答案 0 :(得分:1)

你有一个指针键入问题。我很惊讶它甚至编译,因为&HuffmanNodes的类型为node***

试试这个:

void read_Huffman_encoded_data(struct node ***HuffmanNodes)
{
    *Huffman_nodes = (node**)malloc(sizeof(node*)*(*number_of_nodes));

    int index;
    for(index=0; index<*number_of_nodes;index++)
    {
        (*Huffman_nodes)[index] = (node*)malloc(sizeof(node));
        (*Huffman_nodes)[index]->first_value=1;
        (*Huffman_nodes)[index]->second_value=2;
    }
}

你也有一些命名不匹配(我修复了),我希望这些只是打破程序的错误。

编辑:替代方法

int main()
{
    struct node** HuffmanNodes = (node*)malloc(sizeof(node) * (*number_of_nodes));
    read_Huffman_encoded_data(HHuffmanNodes);
}

void read_Huffman_encoded_data(struct node **HuffmanNodes)
{
    int index;
    for(index=0; index<*number_of_nodes;index++)
    {
        Huffman_nodes[index] = (node*)malloc(sizeof(node));
        Huffman_nodes[index]->first_value=1;
        Huffman_nodes[index]->second_value=2;
    }
}

答案 1 :(得分:0)

试试这个:

int main()
{
    struct node** HuffmanNodes;
    read_Huffman_encoded_data(&HuffmanNodes);
}

void read_Huffman_encoded_data(**HuffmanNodes)
{
    Huffman_node = (node*)malloc(sizeof(node)*(number_of_nodes));

    int index;
    for(index=0; index<*number_of_nodes;index++)
    {
        Huffman_node[index] = (node*)malloc(sizeof(node));
        Huffman_node[index]->first_value=1;
        Huffman_node[index]->second_value=2;
    }
}