我在 C 中有一個結構,旨在存盤有關字符 lcd 的資訊。它看起來像這樣:
typedef struct CharLCD {
uint8_t rows, columns, currentLine;
uint8_t* lineAddress;
uint8_t* pContent;
} CharLCD;
我想創建該結構的一個實體,并pContent使用指向已知大小的空陣列的指標進行填充。lineAddress我通過列出所有值解決了這個問題,但我希望pContent存盤 64 個值,這使得這種方法不切實際。我可以稍后以編程方式分配值,但我需要創建陣列:
CharLCD lcd16x4 ={
.rows = 4,
.columns = 16,
.currentLine = 0,
.lineAddress = {0x00, 0x40, 0x10, 0x50},
.pContent = /*uninitialized array of size 64*/
};
有沒有比創建一個空陣列作為新變數然后將指標存盤到更優雅的方法來實作這一點pContent?該代碼旨在在不允許動態分配記憶體的嵌入式平臺上運行。
感謝您的任何幫助。
uj5u.com熱心網友回復:
您可以使用復合文字。
CharLCD lcd16x4 ={
.rows = 4,
.columns = 16,
.currentLine = 0,
.lineAddress = {0x00, 0x40, 0x10, 0x50},
.pContent = (uint8_t[64]){0}
};
您也可以只宣告 64 元素陣列并在結構的初始化中參考它。
uint8_t lcd16_content[64];
CharLCD lcd16x4 ={
.rows = 4,
.columns = 16,
.currentLine = 0,
.lineAddress = {0x00, 0x40, 0x10, 0x50},
.pContent = lcd16_content
};
它們之間唯一有效的區別是陣列具有獨立于結構成員的名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/519686.html
標籤:数组C指针结构体
