我需要創建一個帶有 2D bool 陣列作為成員的結構,因此我將其設為雙指標,如下所示。不,每當我嘗試將二維陣列物件分配給這個結構成員時,我都會遇到問題,我收到一條警告,指出它是不兼容的指標型別。無論如何分配它(不是復制,因為我沒有物件只有雙指標作為結構成員)
#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]
uj5u.com熱心網友回復:
指向指標的指標不是陣列。它不是二維陣列。它不是指向陣列的指標。不能指向陣列。
指標到指標的一個非常特殊的用例是讓它指向指標陣列的第一個成員。這在宣告指向字串的指標陣列時非常有用。
bool testObject[3][6];是一個二維陣列 - 一個陣列陣列。第一項是型別為 的陣列bool [6]。為了指向它,您需要一個型別為 的指標bool (*)[6]。因此,正確的代碼是:
typedef struct
{
bool (*object)[6];
}entry_t;
bool testObject[3][6];
entry_t entry =
{
.object = testObject
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364724.html
上一篇:如何對貓鼬集合中的欄位值求和
下一篇:將一行代碼從c轉換為c
