【无标题】

一、字符串变量

除了用字符数组存储字符串外,C++增加了一种更加便捷的方式,即定义字符串类型(string)的变量来存放字符串。
1. 字符串变量的定义及初始化
string s1; // 定义 s1 为字符串变量
string s2=”China”; // 定义 s2 ,并对其初始化
string s3(”USA”); // 定义 s3 ,并对其初始化
注意: 在使用string类型时,必须在文件的开头加上
  #include <string>
2. 字符串变量的赋值
在定义字符串变量后,既可以使用字符串常量对其赋值, 也可使用另一字符串变量对其赋值,而且不用担心“超长 ”。
string s1, s2=”China”;
s1= ”USA”; //s1 的长度变为了 3
s1=s2; //s1 的长度变为了 5
3. 字符串变量的输入/输出
cout << s2; // 输出 China
cin >> s1; // 从键盘输入字符串给 s1
4.复制字符串用赋值号
string s1, s2;
s1 = ”China”; // 把字符串常量复制到 s1
s2 = s1; // 把串 s1 复制到 s2
cout<<s2; // 输出 China
5.连接字符串用加号
string s1=”C++ ”;
string s2=”Language”;
s1=s1 + s2; // 把串 s2 连接到 s1
cout<<s1; // 输出 C++ Language
6.比较字符串直接用关系运算符
string s1=”C++ ”;
string s2=”Language”;
if(s1 == s2)cout<<”s1=s2”;
else cout<<”s1!=s2”; // 输出 s1!=s2
7.求字符串的长度
string s2=”Language”;
cout<< s2.length() ; // 输出 8
8.引用字符串的某个字符
string s2=”Language”;
s2[3] = ’G’ ;
cout<<s2; // 输出 Lan G uage
在需要存储多个字符串的场合,可以定义字符串数组。
string addr[10]; // 定义可容纳 10 个串的字符串数组
#include <iostream>
#include <string>
using namespace std;
string max(string s1,string s2,string s3)
{
	if(s1<s2)
		s1=s2;
	if(s1<s3)
		s1=s3;
	return s1;
}
int main()
{
	string s1,s2,s3;
	cin>>s1>>s2>>s3;
	string s;
	s=max(s1,s2,s3);
	cout<<s<<endl;
	return 0;
}

二、动态管理内存的运算符

1. new 运算符
格式: new 数据类型 new int
或者 new 数据类型(初值) new double(10)
或者 new 数据类型[数组大小] new char[10]
功能:在内存中分配一个存放指定类型数据的空间,并返回其首地址。
1.使用new分配存放整数的空间
new int
该表达式的值为空间的首地址。
new int 作用 :
在内存中建立一个无名的整型变量,
并返回该变量的地址。
2.使用new分配存放整数空间并初始化
int *p;
p= new int(1234) ;
cout<<*p;
3.使用new分配字符数组空间
char *p;
p= new char [ 10 ] ;
p*1+=’a’;
4. 使用new分配整型数组空间
int *p;
p= new int[5];
*(p+2)=20;
p[1]=10;
关于new运算符注意以下几点:
在用new分配数组空间时不能为数组元素指定初值;
若由于内存不足等原因导致分配失败,则new会返回空指针NULL,用户可据此判断分配空间是否成功;
要访问动态分配的变量/数组元素,只能通过指针p来进行
new是在内存的堆区域中分配空间;
new与delete是运算符,而非函数。
2. delete 运算符
格式: delete 变量地址
或者 delete [] 数组首地址
功能:释放new分配的存储空间(撤销new建立的变量)

(1)

double* p=new double(3.14);

*p=8.1;
delete p ;
(2)撤销动态分配的数组空间
int *pt=new int[10];
delete [] pt ;
#include <iostream>
#include <string>
using namespace std;
struct student
{
	string name;
	int num;
	char sex;
	
};
int main()
{
	student *p;
	p=new student;
	(*p).name="李明";
	(*p).num=1234;
	(*p).sex='M';
	cout<<(*p).name<<" "<<(*p).num<<" "<<(*p).sex<<endl;
	delete p;

	return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int i,j,k,t,*p;
	p=new int[n];
	for(k=0;k<n;k++)
		cin>>p[k];
	for(i=1;i<n;i++)
	{
		for(j=0;j<n-1;j++)
		{
			if(p[j]>p[j+1])
			{
				t=p[j];
				p[j]=p[j+1];
				p[j+1]=t;
			}
		}
	}
	for(i=0;i<n;i++)
		cout<<p[i]<<" ";
	cout<<endl;
	delete p;
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值