1.字元串指針變量
首先明确:存放變量位址的變量為指針變量。
1.1 字元串指針變量的定義形式
char *p= "i like";
這裡p就是一個字元串指針變量。p存放的是字元串“i like”的首位址。
1.2 通過字元串指針變量通路字元串的方式
char *p = "i like";
//列印i
cout<<p[0]<<endl;
//列印整個字元串"i like"
cout<<p<<endl;
我們可以通過指針變量帶下标的方式通路字元串的具體元素。列印時直接寫指針變量,那麼c++編譯器會從字元串的首位址開始列印,直到遇見“\0"停止。(注:每個字元串,c++編譯器都會在其末尾加上“\0”)
1.3 字元串指針變量的注意事項
不能用指針變量帶下标方式改變具體元素
char *p = "i like"
p[0] = "t"
//這個是錯誤的。因為p[0]是字元串常量,不可更改。
如果将一個字元串的值複制給一個開辟好空間的指針變量,利用strcpy函數
char *p = "i like"
char *t
t = new char[strlen(p)+1]
strcpy(t,p)
2 字元串數組
2.1 字元數組的定義方式
char k[] = "i love"
這裡k[是一個字元數組。數組名是字元串的首位址。
2.2 字元數組的通路方式
char k[] = "i love";
//列印具體元素 i
cout << k[0]<<endl;
//列印整個字元串
cout<<k<<endl;
可以看到字元數組的通路方式和字元串指針變量相同。
2.3 字元數組的注意事項
與字元串指針變量不同的是,具體元素的改變
char k[] = "i love";
k[0] = p;
//這個是正确的,這裡k[0]是一個char型變量
還有就是以下兩種情況是不等價的
char k[6] = "i love";
//不等價于
char k[6];
k[6] = "i love";
但是字元串指針變量下面的情況是等價的
char *p = "i love";
//等價
char *p;
p = "i love";
參考連結:https://blog.csdn.net/Cheney012/article/details/84950350
https://blog.csdn.net/qq_41950229/article/details/83515267
https://blog.csdn.net/sandwich125/article/details/79161030