2013-07-19 147 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'