arduino的可变数组大小

时间:2013-12-29 15:42:24

标签: arrays variables size arduino

我有一张SD卡,里面装满了15首mp3曲目和一个包含15个单词和15个曲目名字的文本文件。我的问题是关于初始化以下

char* words[ ]
char* tracks [ ]

当我将它们初始化为[100][100]时,dB的列表不起作用,因为我目前只有15个曲目和单词。我希望代码能够放置999。

所以我的问题是:我可以将它们变成两个变量数组吗?

我尝试在括号之间留空和其他几种方法,但它们不起作用。 所以我想知道这里是否有人有任何其他建议。

2 个答案:

答案 0 :(得分:1)

Arduino版本的C / C ++有一个很棒的功能--VLA(可变长度数组,来自C99) 所以,只需使用:

void process(int n)
{
    // Set up a buffer of n characters
    char b[n];
    // do the work
}

请参阅:http://www.drdobbs.com/the-new-cwhy-variable-length-arrays/184401444

你需要数组数组吗?没问题(我希望)。伪代码:

char* words[N]; // N - words
char word1[M] // M - word length
char word2[O] // O - second word length

words[0] = word1;
words[1] = word2;

许多答案建议使用动态内存分配 - 它有效,但这种方法的主要缺点 - 内存碎片。但请记住 - 动态内存分配只是从函数返回数组的方法!

P.S。我目前无法使用编译器验证代码 - 如果它无法正常工作,请给我反馈。

答案 1 :(得分:0)

Arduino代码编译为C ++;您可以使用new char[size]delete[]运算符。