/*
Arduino 裡的字串可以用兩種方法來做, 一是用 C 語言本來就有的 char 類型的陣列; 二是用 Arduino IDE 0095 版
後提供的 String 資料類型 (C 語言本身無此資料型別, 而是透過 string.h 函式庫提供). 使用 char[] 儲存字串時要注意,
 必須在陣列結尾加一個 '\0' (NULL) 字元 (直接用整數 0 也是可以的), 這是字串的結束符號 :

char a[5]={'A','B','C','D','\0'};   //四個字元外加一個 NULL
char a[5]={'A','B','C','D', 0};

C 語言中字元陣列與字串的差別如下圖所示, C 是利用字元陣列後面另加一個 NULL 來表示字串的 :

圖片:https://3.bp.blogspot.com/-z7-of4TEiEc/V2JkVWRcDuI/AAAAAAAAGCI/jtG_HBT659cZ8SfqLAJmcnwTukHgY2fmQCLcB/s1600/C_string_char_array.jpg


字串變數也可以直接用字串常值 (Literal) 來賦值 (注意, Arduino 中, 字元須用單引號, 字串須用雙引號括起來,
 C 語言則沒有字串), 如果自行指定長度, 必須比資料字元數多 1, 否則編譯失敗, 要不然乾脆不要指定, 由編譯器處理就好 :

char a[5]="ABCD";    //自行指定陣列大小, 須比資料字元多 1
char a[]="ABCD";      //由編譯器自動計算陣列大小

例如 :
 */

void setup() {
  Serial.begin(9600);
  char a[]="ABCD";       //由編譯器自動計算陣列大小
  Serial.println(sizeof(a));     //輸出 5, 多一個 byte 存放結尾的 NULL (0)
  for (int i=0; i<sizeof(a); i++) {
    Serial.print(a[i]);      //輸出 ABCD,注意這裡其實印了4次
    }
  }

void loop() {

}

/*
此處使用了 Arduino 內建函數 sizeof() 來計算陣列的長度. 注意, sizeof() 事實上是在計算資料所占的總 byte 數, 
因為 char 一個字元就是 一個 byte, 因此剛好就是字元陣列的長度. 如果關掉 Arduino 序列埠監視視窗, 
改用 AccessPort 來觀察串列埠, 可知編譯器確實自動在陣列尾加上 NULL :

圖片:https://3.bp.blogspot.com/-q9Xal95hVf0/VfjmIea9ZQI/AAAAAAAAEd4/loKAO8rIIl0/s320/arduino_char_array.jpg
*/
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3