2013-07-19 102 views
4

什么是像char *song; 这样的声明* *做了什么?它是一个数组,指针或其他东西?什么是arduino中的char *声明?

+0

如果我有一个我猜它的指针,但我不当然,这就是为什么我问 –

+1

是的,它确实是一个指针,但这里是你应该阅读的东西:[1](http://webcache.googleusercontent.com/search?q=cache:ZeMBWj5-UpIJ:www (但插入'int main()',因为它古老),[2](http:// stackoverflow。)。 com/questions/562303/the-definitive-c-book-guide-and-list) – 2013-07-19 15:29:40

回答

5

*(星号)表示该变量是一个指针。作为一个小例子:

int x = 0; 
int *y = &x; //y is pointing to x 
const char* myText = "Text"; 

你可能然而有兴趣学习多一点关于what pointers are

+1

谢谢,我有点困惑,因为我有一个巨大的声明,像这样'char * song =“smb:d = 4,o = 5,b = 100:16e6,16e6,32p,8e6,16c6,8e6,8g6,8p,8G,8P,8c6,16p,8G,16P,8E 16P,8A,8B,16A#,8α,16G,16e6,16g6,8a6,16f6,8g6,8e6,16c6,16d6,8b,16P,8c6,16p,8G,16P,8E,16P,8A,8B,图16A#,8α,16G,16e6,16g6,8a6,16f6,8g6,8e6,16c6,16d6,8b,8P,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16G#,16α ,16c6,16p,16A,16c6,16d6,8p,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16c7,16p,16c7,16c7,p,16g6,16f#6,16f6,16d #6,16p,16e6,16p,16g#,16a,16c6,16p,16a,16c6,16d6,8p,16d#6,8p,16d6,8p,16c6“'所以我不知道它是否是一个数组或什么 –

+2

@BernardoMeurerCosta字符串文字本身就是一个数组,但它可以衰减为指向其第一个元素的指针。 – 2013-07-19 15:33:56

2

H2CO3是对的,你应该阅读c和指针。

char *song = "smb:d=4,o=5,b=......." 

是在做同样的事情,如下

char song[] = "smb:d=4,o=5,b=......." 

代码在这两种情况下,歌曲是指向字符串数组。 C++有一个字符串对象,但普通的C使用了c_strings。一个c_string只是一个char数组。你有什么看起来像一个c_string。

*song  //the same as "song[0]" will equal 's' 
*(song+1) //the same as "song[1]" will equal 'm' 
*(song+2) //the same as "song[2]" will equal 'b'