字符指針賦值探究小結


1, 字符指針有初始值時,不能修改其中字符的值

#include<iostream>
using namespace std;
int main()
{
	char *p1 = "nihao";//字符指針賦值給字符指針只能讀不能修改字符的值
	char *p2 = p1;
	p1[0] = 'm';//嘗試修改,會報錯
	return 0;
}

會報錯:
在這里插入圖片描述

2,字符指針賦值給另外一個字符指針,接受字符串的指針也只能進行讀取操作。

#include<iostream>
using namespace std;
int main()
{
	char *p1 = "nihao";//字符指針賦值給字符指針只能讀不能修改字符的值
	char *p2 = p1;
	p2[0] = 'm';//嘗試修改,會報錯
	return 0;
}

同樣報錯:訪問權限的問題
在這里插入圖片描述
3,如果想要對字符指針里面的值進行操作怎么辦呢?
看例子:
1)用C語言中strcpy函數

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int main()
{
	char *p1 = "nihao";
	char *p2=new char[sizeof(p1)+1];//new 開辟一段新的內存,注意要加上1,要加上字符串末尾‘\0’
	strcpy(p2, p1);//調用字符串copy函數
	p2[0] = 'm';//對新開辟的內存進行操作
	cout << p2<<endl;//輸出操作后的結果
	cout << p1<<endl;//對原來字符串沒有影響,原來字符串可以看做常量,不能修改。
	
}

2)可以用C++中string 類解決

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string a= "nihao";
	string b = a;
	b[2] = 'M';//將一個string a賦值給另外一個string b后,可以對b進行操作,對原來那個string a類沒影響。
	/*a[1] = 'M';*/
	cout << b<<endl;//輸出操作結果
	cout << a << endl;//對原來那個string a類沒影響,驗證結果
	
}

在這里插入圖片描述

補充:字符串小結

1.string 類不能賦值字符串指針
2.字符串指針可以賦值給string類
3.string 類有初始值后不能看做常量,其中的值也可以修改。(這點和字符指針常量做區分!!)
4.將一個string a賦值給另外一個string b后,可以對b進行操作,對原來那個string a類沒影響


免責聲明!

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



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