web-dev-qa-db-ja.com

arduinoのchar *宣言とは何ですか?

char *song;のような宣言はどうなりますか?*は何をしますか?それは配列、ポインタ、または何か他のものですか?

6
Bernardo Meurer

*(アスタリスク)は、変数がポインターであることを示します。小さな例として:

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

ただし、 ポインタとは についてもう少し詳しく知りたいと思うかもしれません。

7
Floris Velleman

H2CO3は正しいです、あなたはcとポインタを読むべきです。

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

以下のコードと同じことをしますか

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

どちらの場合も、songは文字列の配列へのポインタです。 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'

等々

3
John b

はい、アスタリスクはそれをポインタにします。あなたは他の答えで行くのに十分なようですが、あなたが良いcの本を探しているなら: http://cm.bell-labs.com/cm/cs/cbook/

〜クリス

2
Chris Topher