C
あっているかわからないけど,ポインタは結局は組み込みなどメモリ容量が制限される環境と,戻り値が2以上の関数でグローバル関数を使いたくない場合に有効な手段. 裏を返すと,メモリに余裕があって,動けば良くて,ポインタで躓いて時間を食うくらいなら…
例えば65535(0xFFFF)のような2byteのデータをシリアル通信で送信する場合、1) 文字列のまま送る→ 0x54 0x53 0x53 0x51 0x53 で5byte必要 2) バイナリデータで送信 → 0xFF 0xFF で2byteとバイナリデータで送信する方が効率がよい.2byteデータをバイナリデー…
オーバーフローといっていいのかよくわからないけど文字宣言のところで変数の意味が分かるように掛け算で数値を代入したとき,具体的には unsigned long time_millisec = 135 * 1000 //msec としてミリ秒にするため1000をかけて代入したところなぜか代入され…
ヌル文字のみchar変数へ代入する場合はシングルクォーテーションを使う。 × char test = "\0"; ○ char test = '\0';ヌル文字は表示上1文字だが\はエスケープシークエンスなので1文字扱い
下記だとコンパイルエラーになる。エラーメッセージは "empty character constant" C言語はヌル文字を入れる必要あり。 × char test = ''; ○ char test = '\0';ヌル文字は表示上2文字だが扱いとしては1文字なので シングルクォーテーションで囲む。
まだまだ迷うので覚書。例外が多すぎるのが混乱の原因? ■文字列(文字ではない)の代入は基本的に不可。 例外として宣言の時はok × char test[40]; test = "hogehoge"; ○ char test[0] = "hogehoge" 宣言後の変数へ文字列代入はstrcpy,strcatか一文字ずつ…
ArduinoでGPSからのデータを処理した際に使った,何度も忘れるポインタと文字列のおぼえがき。・C言語に文字列はない。 char st = "ABC" ←これはエラー char st[4] = "ABC" ←これはok <追記> これはC言語の特例。 本来は終端文字\0が必要だが宣言の時に限り\…