C++中字符串与指针的关系

本文探讨C++中字符串与指针的交互,特别是string类如何表示字符串常量以及const char*的角色。内容涵盖字符串初始化、string与const char*之间的转换,以及涉及字符串常量的一些特殊操作和指针取地址的行为。文章通过实例解释了字符指针可能被视为字符串而非地址的现象,并提供了获取字符地址的方法。
摘要由CSDN通过智能技术生成

1. 字符串初始化

在C++中基本数据类型并不包括string,string类型其实是一种类类型,通过STL函数库中的模板类basic_string 实例化得到。

int main ()
{
   
//	string a = new string("123"); // 报错,需要将std::basic_string<char> * 转换到 std::basic_string<char>,
									// 也就是编译器无法完成转换
	string *a = new string("123");	
	string b = "456";				
	string *c = new string(b);		// 并不是拷贝构造的浅拷贝
	
	*c = "789";
	
	cout << *a  << endl; 	// 输出 123
	cout << b[0] << endl;	// 输出4
	cout << c[0] << endl;	// 输出789
	
    return 0;
}

通过上面的代码,可以看出几点:

  1. 通过模板类实例化的类类型必须用string指针接收,指针步长为初始化变量的大小(上例中步长为3)
  2. 字符串常量赋值得到的类型可以用string类型接收
  3. 使用类对象对string类进行初始化,并不是浅拷贝,对指针的操作与原对象无关



2. string & 字符串常量 & char*

2.1. string,字符串常量在C++中的表示**: ( const char *)

int main()
{
   
//	string a = 123;		// 报错,invalid conversion from 'int' to 'const char*'
		
//	int a  = "123";		// 报错&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值