gpt4 book ai didi

c - C中的参差不齐的数组

转载 作者:太空狗 更新时间:2023-10-29 16:12:09 27 4
gpt4 key购买 nike

我接到了一个用 C 语言编写的微 Controller 项目。我是一个有成就的程序员,但不是用这种语言。我“认为”我的问题与 C 语法(以及我缺乏理解)有关,而不是微 Controller 编译器,因此为了简洁起见,我将忽略编译器问题。

我正在尝试使用 Jagged/Ragged 数组来存储字体信息,以便快速调用以显示在 LCD 上。有其他方法可以解决这个问题,但我有理由坚持这个概念。

让我们假设此示例中我的字体中只有三个字形(字符)。未知的是定义该字形的每一行的长度。示例:

字形 {A} 需要这些数据: {65,8,12,1,0,0x18, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF}

字形 {'} 需要以下数据: {39,2,3,4,9,0xC0,0xC0, 0xC0}

字形 {.} 需要以下数据: {46,2,2,4,0,0xC0,0xC0}

考虑到这一点,这是我的代码。

//This is where I attempt to make my Jagged array.
char X,Y, LeftOffSet, BaseOffSet;
char * font[3]={{46,2,2,4,0,0xC0,0xC0},
{39,2,3,4,9,0xC0,0xC0, 0xC0},
{65,8,12,1,0,0x18, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF}};

//None of these assignments work properly.
LeftOffSet=font[0][0]; // expected assignment = {46}
LeftOffSet=font[1][4]; // expected assignment = {9}
LeftOffSet=font[2][1]; // expected assignment = {8}

这段代码看起来有用吗?我似乎在抛出一个难以捕获的错误。作业未按预期工作。当编译器命中第一个时,它会重置项目。

预先感谢您的帮助。

最佳答案

如果您确实需要一个参差不齐数组,那么为了使用这种内联语法构建它,您需要一个支持复合文字的现代 C 编译器。

char *font[] = { 
(char []) {46,2,2,4,0,0xC0,0xC0},
(char []) {39,2,3,4,9,0xC0,0xC0, 0xC0},
(char []) {65,8,12,1,0,0x18, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF}
};

如果您的编译器不支持复合文字,您别无选择,只能将内部数组定义为单独的命名对象

char row0[] = {46,2,2,4,0,0xC0,0xC0},
row1[] = {39,2,3,4,9,0xC0,0xC0, 0xC0},
row2[] = {65,8,12,1,0,0x18, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF},
*font[] = { row0, row1, row2 };

您的原始代码不是有效的 C。如果它可以编译,那只是由于某些编译器扩展,它没有按照您的想法执行。

附言与 'C' Segmentation fault with 2d array 相同的问题

关于c - C中的参差不齐的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com