1、const char* p: p is a pointer to const char(char const* p 一樣)
意思就是不能通過p指針來修改p指向的內容(但是內容可以修改)。
2、char* p : p is a pointer to char
意思就是可通過p指針來修改p指向的內容
3、char* const p: p is a const pointer to char
意思就是p指針是一個常指針,他指向的內存地址不能變,定義的時候就得初始化
一旦給指針p賦了值,就不能再對他進行賦值操作,但是可以通過他修改他指向的
內存地址中的值。
4、char p[size] :p is a const pointer to char
意思就是p指針是一個常指針,當定義字符數組時,系統就為他分配了地址空間,
p指針指向的地址是不能變的。但可以通過他修改其指向的內存空間中的值。當要
通過P指針修改其內容時,只能通過傳值的方式,不能通過傳地址的方式。
5、string: C++的一個字符串類,他可以進行c版本字符串不允許的許多操作比如+ -,
> < ==(比較,返回bool值)等操作。
賦值
1、const char* -> char*
1) strcpy(char*,const char*)這是一種拷貝的方法,a和b指向的地址不一樣
char* a;
a = (char*)malloc(20);
const char* b = "zhangnianyong";
strcpy(a,b);
2)strcpy(char*,const char*)和上面一樣
char* a = new char;
memset(a,0,20);
const char* b = "zhangnianyong";
strcpy(a,b);
3)強制轉換
const char* b = "zhangnianyong";
char* a = (char*)b;
這種方式a和b指向的地址一樣,可以通過指針a修改其內容,但是不能通
過指針b修改其內容。通過指針a修改其內容後,指針b指向的內容也發生
變化。
2、char* ->const char*
1)直接賦值
char* a;
const char* b = a;
這樣指針a和指針b的指向的地址一樣,可以通過指針a修改其內容,但是不
能通過指針b修改其內容,通過指針a修改其內容後,指針b指向的地址空間
的內容也發生了變化。
3、const char* -> char* const
1)強制轉換
const char* b;
char* const a = (char*)b;
這種方式a和b指向的地址一樣,可以通過指針a修改其內容,但是不能通過
指針b修改其內容。通過指針a修改其內容後,指針b指向的內容也發生變化。
4、char* const ->const char*
1)直接賦值
char a[5] = "zhang";
char* const b = a;
const char* c = b;
這種方式b和c指向的地址一樣,可通過指針b修改其內容,但是不能通過指
針c來修改其內容。通過指針b修改其內容後,指針c指向的內容也發生變化。
5、char[] -> const char*、char*、char* const
1)直接賦值
char a[5] = "zhang";
const char* b = a;
char* c = a;
char* const d = a;
這種方式指針a和其他類型指針指向的地址是一樣的,可以通過指針a修改來
修改其內容,如: a[i] = 'a'。
6、const char*、char*、char* const -> char[]
1)strcpy(char* const char*)
char a[20] = {0};
const char* b = "zhangnianyong";
char* const c = "zhangnianyong";
char* d = "zhangnianyong";
strcpy(a,b/c/d);
通過拷貝的方式,
2)memcpy(void*, const void*, size)
7、char[] -> string
char a[20] = {0};
string b;
b = a;
8、char* -> string
char *a;
a = (char*)malloc(15);
string b;
strcpy(a,"zhangnianyong");
b = a;
9、const char* -> string;
const char* a;
string b;
b =a;
10、char* const -> string
char* const a;
string b;
b = a;
注意: char[]、const char*、char*、char* const -> string,直接賦值
11、string -> const char*
string a;
const char* b;
b = a.c_str();
12、string -> char[]、char*、char* const
只要通過中間變量const char*就可以了