常量, char[], const char[], char*, const char*, char* const以及const char* const的詳解


注意,這里用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 只讀 只讀

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM