注意,這里用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 | 只讀 | 只讀 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/6500.html
標籤:Windows
上一篇:eclipse+spket+Extjs4.2.1開發環境搭建
下一篇:windows7精簡iso
