俺言語。

自分にしか理解できない言語で書かれた備忘録

C

【C,ポインタ】改めてCのポインタ 個人的まとめ

あっているかわからないけど,ポインタは結局は組み込みなどメモリ容量が制限される環境と,戻り値が2以上の関数でグローバル関数を使いたくない場合に有効な手段. 裏を返すと,メモリに余裕があって,動けば良くて,ポインタで躓いて時間を食うくらいなら…

【C】2byte以上のデータを1byteずつ送信する方法

例えば65535(0xFFFF)のような2byteのデータをシリアル通信で送信する場合、1) 文字列のまま送る→ 0x54 0x53 0x53 0x51 0x53 で5byte必要 2) バイナリデータで送信 → 0xFF 0xFF で2byteとバイナリデータで送信する方が効率がよい.2byteデータをバイナリデー…

【Arduino,C】文字宣言時にオーバーフロー?

オーバーフローといっていいのかよくわからないけど文字宣言のところで変数の意味が分かるように掛け算で数値を代入したとき,具体的には unsigned long time_millisec = 135 * 1000 //msec としてミリ秒にするため1000をかけて代入したところなぜか代入され…

【C,はまった】

ヌル文字のみchar変数へ代入する場合はシングルクォーテーションを使う。 × char test = "\0"; ○ char test = '\0';ヌル文字は表示上1文字だが\はエスケープシークエンスなので1文字扱い

【C,はまった】空の文字宣言

下記だとコンパイルエラーになる。エラーメッセージは "empty character constant" C言語はヌル文字を入れる必要あり。 × char test = ''; ○ char test = '\0';ヌル文字は表示上2文字だが扱いとしては1文字なので シングルクォーテーションで囲む。

続 ポインタ・文字列   

C

まだまだ迷うので覚書。例外が多すぎるのが混乱の原因? ■文字列(文字ではない)の代入は基本的に不可。 例外として宣言の時はok × char test[40]; test = "hogehoge"; ○ char test[0] = "hogehoge" 宣言後の変数へ文字列代入はstrcpy,strcatか一文字ずつ…

ポインタと文字列

C

ArduinoでGPSからのデータを処理した際に使った,何度も忘れるポインタと文字列のおぼえがき。・C言語に文字列はない。 char st = "ABC" ←これはエラー char st[4] = "ABC" ←これはok <追記> これはC言語の特例。 本来は終端文字\0が必要だが宣言の時に限り\…