簡體   English   中英

如何操作包含二維數組的結構數組

[英]How to manipulate an array of structure containing 2D array

使用C++ ,我正在實現一個定義為HiddenLayer的結構數組

    struct HiddenLayer
    {
        int prev;     ///Number of Rows in node
        int next;     ///Number of Columns in node

        float **node; ///2D array pointer
    };

結構數組在主程序中初始化,節點是指向結構內部二維數組的指針。 我正在初始化這個數組

    int main()
    {
        struct HiddenLayer HLayer[1]; 

        HLayer[0].prev = 1;  //Num of rows
        HLayer[0].next = 3;  //num of col

        HLayer[0].node = (float *) malloc((HLayer[0].prev) * sizeof(float *));  
 
        for(int i=0;i<HLayer[0].prev;i++)
            HLayer[0].node[i] = malloc(HLayer[0].next * sizeof(float));

    
        return 0;
    }

但我收到此錯誤:

In function ‘int main()’:
main.cpp:22:73: error: cannot convert ‘float*’ to ‘float**’ in assignment
     HLayer[0].node = (float *) malloc((HLayer[0].prev) * sizeof(float *));  
                                                                         ^

>main.cpp:25:35: error: invalid conversion from ‘void*’ to ‘float*’ [-fpermissive]
         HLayer[0].node[i] = malloc(HLayer[0].next * sizeof(float));

我按照這里這里給出的答案

我做錯了什么?

錯誤消息一目了然:您混淆了類型。

HLayer[0].node = (float *) malloc((HLayer[0].prev) * sizeof(float *));

應該

HLayer[0].node = (float **) malloc((HLayer[0].prev) * sizeof(float *));

HLayer[0].node[i] = malloc(HLayer[0].next * sizeof(float));

應該

HLayer[0].node[i] = (float *) malloc(HLayer[0].next * sizeof(float));

但這就是說,為什么要在 C++ 中使用malloc()和 family?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM