簡體   English   中英

將二維數組分配為結構成員

[英]assigning 2D array as a struct member

我需要創建一個以 2D bool 數組作為成員的結構,因此我將其設為雙指針,如下所示。 不,每當我嘗試將二維數組 object 分配給這個結構成員時,我都會遇到問題,我會收到一條警告,指出它是不可兼容的指針類型。 無論如何要分配它(不復制,因為我沒有 object 只有雙指針作為結構成員)

#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>



typedef struct
{
    bool** object;
}entry_t;

bool testObject[3][6];

entry_t entry =
{
        .object = testObject
};

收到的警告

warning: initialization of '_Bool **' from incompatible pointer type '_Bool (*)[6]' [-Wincompatible-pointer-types]

指針指向指針不是數組。 它不是二維數組。 它不是指向數組的指針。 它不能指向 arrays。

指針對指針的一個非常特殊的用例是讓它指向指針數組的第一個成員。 這在聲明指向字符串的指針數組時非常有用。

bool testObject[3][6]; 是一個二維數組 - arrays 的數組。 第一項是bool [6]類型的數組。 為了指向它,您需要一個bool (*)[6]類型的指針。 因此正確的代碼是:

typedef struct
{
  bool (*object)[6];
}entry_t;

bool testObject[3][6];

entry_t entry =
{
  .object = testObject
};

暫無
暫無

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

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