【发布时间】:2016-04-05 16:56:12
【问题描述】:
请耐心等待,因为我对 C 比较陌生。
我正在尝试创建一个函数,它可以将音符的名称(即 D 或 D#)作为参数,并返回其对应的 midi 音符编号 (midi number table) 的值以及八度音阶的第二个参数.
但是,我似乎在初始化字符串或在函数中使用它时遇到问题。这是我写的函数:
int midi_number(char note[], int octave)
{
int midiNumber
if (note[1] = '#')
{
switch(note[0])
{
case 'C': case 'c':
midiNumber = 25;
break;
case 'D': case 'd':
midiNumber = 27;
break;
...
}
}
else
{
switch(note[0])
{
case 'C': case 'c':
midiNumber = 24;
break;
case 'D': case 'd':
midiNumber = 26;
break;
...
}
}
return (midiNumber + (octave * 12))
}
然后我按如下方式调用该函数:
midi_number('C#', 1);
希望这能理解我想要实现的目标。我研究过指针和数组,但我看不出它如何适用于我正在做的事情。
非常感谢任何帮助!
【问题讨论】:
-
您对 character 文字使用单引号
',对字符串文字使用双引号"。 -
这甚至不会编译。类型不匹配、缺少分号等
-
另外,想想比较运算符和赋值运算符的区别。
-
我上面的两点应该已经被几乎所有好的初学者书籍解释过了。也许你应该扔掉你拥有的那个和find another one?
标签: c string function parameter-passing