C++的学习之路(复合类型)

C++的学习之路(复合类型)

1.字符串

注意:1.单引号和双引号的区别。
可以这样赋值char a='S'
但是不能这样赋值char a="S"
因为"S" 实际上表示的是字符串所在的内存地址,而'S'只是ASCII码83的另一种写法。
2.strlen()只计算可见字符,不把空字符计算在内。

读入空格所需的get()和getline()
面向行的输入getline():
调用方法:
1.用cin.getline(),有两个参数,第一个用来储存输入行的数组名称,第二个是要读取的字符数

cin.getline(name,20)

面向行的输入get():
与getline()类似,但并不再读取并丢弃换行符,而是将其留在输入队列中。
若连续调用两次get(),由于第一次调用后,换行符留在输入队列中,所以第二次调用所显示的只会是换行符,不会是输入的内容。应在中间加一次cin.get()处理换行符。或者用cin.get(,).get()拼接起来。
注意:当get或者getline输入大于内存的字符串时,多出部分会留在输入队列中,getline还会设置失效位(failbit)并关闭后面输入。
可用cin.clear();来恢复,让错误标识改回为0,可继续输入,再用cin.syn()来清空流

2.string类

声明和赋值:

string str1; string str2="panther";

类设计让程序能够自动处理string的大小。
优点:数组不能赋给另一个数组,但是可用将一个string对象赋给另一个string对象

str1=str2;

也可用+来将两个string对象合并。

3.结构

同一个结构,可以储存多种类型的数据。
例:
声明:

struct a {
char name[];
float a;
double b;
}

使用:

a use =
{
"my name",
20,
5
}

使用结构中某个成员时用成员运算符(.)来访问各个成员(感觉与类的对象相似)

结构数组:

a use[2]=
{
{"name1",2,20},
{"name2",20,30}
}

4.New

new会找到一个长度正确的内存块,并返回该内存块的地址。而我们的责任则是将该地址赋给一个指针。
格式:

typename * pointer_name=new typename;

注意:用delete来释放内存delete a;归还和释放的内存可供程序其他部分使用。

使用new来创建动态数组
创建:int* a=new int [10];
new会返回第一个元素的地址,然后地址赋给a。
释放:delete [] a;要多加一个[ ],告诉程序释放的是整个数组,而不是仅仅指针指向的元素。
使用:把指针当数组名使用即可。
如:a=a+1;是指a数组的第二个元素,而不是第一个元素的值加1。

使用方括号数组表示法等同于对指针解除引用

a[0]  ==  *a;
a[3]  ==*(a+3);

cout识别打印为第一个字符串的地址时,会继续打印,直到空字符为止。

使用new创建动态结构
创建:a * ps=new a;
访问成员的方法:不能用(.)只能用(->)
如:ps->price是被指向结构的price成员,它相当于ps.price

《C++ Primer Plus》p70-117

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值