註意,這裡用char類型只是舉了一個例子,其他的int之類的也通用。 1: 常量: 例子: char str[] = "Hello world!"; char ch = 'a'; int i = 12345; 我們看等號右邊的,這些就叫常量。常量在程式運行過程中不會發生改變,並且隨著程式一起裝入記憶體 ...
註意,這裡用char類型只是舉了一個例子,其他的int之類的也通用。
1: 常量:
例子:
char str[] = "Hello world!"; char ch = 'a'; int i = 12345;
我們看等號右邊的,這些就叫常量。常量在程式運行過程中不會發生改變,並且隨著程式一起裝入記憶體。
2: char[]:
例子:
char str[] = "Hello world";
str是一個字元型數組(字元串)變數。可讀可寫。
3: const char[]:
例子:
const char str[] = "Hello world!";
str是一個只讀字元串。它的記憶體單元中的值不可以被改變,只能在變數分配記憶體的時候被初始化進去。如果這樣寫就是非法的:
const char str[] = "Hello world!"; str = "ypa!";//Error Example
4: char*:
例子:
char str[] = "Hello world"; char *lpstr = str;
lpstr是一個指向字元數組(字元串)變數的指針變數。lpstr的值可讀可寫,也就是在不同時間它可以指向不同的的記憶體單元;同時,它所指向的記憶體單元str也可讀可寫。
5: const char*:
例子:
const char str[] = "Hello world!"; const char *lpstr = str; //這樣寫也一樣: //char const str[] = "Hello world!"; //char const *lpstr = str;
lpstr是一個指向只讀字元串的指針變數。lpstr的值可讀可寫,也就是在不同時間它可以指向不同的的記憶體單元;但是,它所指向的記憶體單元str只讀不可寫。如果這樣寫就是非法的:
const char str[] = "Hello world!"; const char *lpstr = str; *lpstr = 'y';//Error Example
6: char* const:
例子:
char str[] = "Hello world!"; char* const lpstr = str;
lpstr是一個指向字元數組(字元串)變數的只讀指針量。lpstr的值只讀不可寫,也就是它被初始化了時候就不能再指向其他變數了;但是,它所指向的記憶體單元str是可讀可寫的。如果這樣寫就是非法的:
char str1[] = "Hello world!"; char str2[] = "ypa!"; char* const lpstr = str1; lpstr = str2;//Error Example
7: const char* const:
例子:
const char str[] = "Hello world!"; const char* const lpstr = str;
lpstr是一個指向只讀字元串的只讀指針量。lpstr的值只讀不可寫,也就是它被初始化了時候就不能再指向其他變數了;並且它所指向的記憶體單元str也是只讀不可寫的。如果這樣寫就是非法的:
const char str1[] = "Hello world!"; const char str2[] = "ypa!"; const char* const lpstr = str1; *lpstr = 'y';//Error Expmple lpstr = str2;//Error Example
總結:
類型 | 自己記憶體單元的屬性 | 所指向的記憶體單元的屬性 |
char[] | 讀/寫 | 無 |
const char[] | 只讀 | 無 |
char* | 讀/寫 | 讀/寫 |
const char* | 讀/寫 | 只讀 |
char* const | 只讀 | 讀/寫 |
const char* const | 只讀 | 只讀 |