我有一张SD卡,里面装满了15首mp3曲目和一个包含15个单词和15个曲目名字的文本文件。我的问题是关于初始化以下
char* words[ ]
char* tracks [ ]
当我将它们初始化为[100]
和[100]
时,dB的列表不起作用,因为我目前只有15个曲目和单词。我希望代码能够放置999。
所以我的问题是:我可以将它们变成两个变量数组吗?
我尝试在括号之间留空和其他几种方法,但它们不起作用。 所以我想知道这里是否有人有任何其他建议。
答案 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[]
运算符。