字元資料char
型態:char、char[]
char有宣告字元,空間1位元組、char letter = 'A';
char[]則是宣告字串,空間n位元組char str1[3] = {'A','+','+'};
char str2[4] = "C++";
char str3[] = "A++有好成績";
char sr1[3] {'A','+','+'};配置了3個字元空間給變數str1,char str2[4] ="C++";配置了4個字元給變數str2,char str3[] = "A++有好成績";根據字串資料的長度配置空間給str3。
ASCIIZ字串:是以'\0'為結尾的字串,當程式使用字串時,C++會自動加入'\0'到字串資料的尾端形成ASCIIZ字串,但不加'\0'到字元尾端。所以C++語言中,字元資料('A')與字串資料("A")是不同的,C++將在"A"結尾加入'\0',因此配置3個字元空間給字元陣列資料,{'A','+','+'},配置4個字元空間給字串資料"C++"。
字元空間'A'占用1bytes的記憶體空間,而字串資料"A"占用2bytes的記憶體空間。所以宣告陣列變數str1時,只保留1bytes的空間,而宣告陣列變數str2時,則須保留2bytes的空間。
下面範例敘述char letter0是宣告字元變數但未指定變數初值,char letter1 = 'C'則宣告並指定letter1的指定初值為C字元,char letter2=67初值等於C的十進位ASCII碼,char letter3 = 0x43的初值0x43等於字元C的十六進位法ASCII碼,char tab = '\t'是指定tab的初值為定位符號,char string[] = "ASCI C++"的char string[]為宣告字元陣列。
試一下
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
char str1[] = "第一航";
char str2[] = "第二航";
char tab = '\t';
cout << str1 << tab << str2 << endl;
system("PAUSE");
return 0;
}
輸出結果: