目录
String类
使用string类,要包含头文件string;
string类位于名称空间std中,因此要提供一条using编译指令,或者使用std::string
#include <iostream>
#include <string>
int main()
{
using namespace std;
string str1;
string str2="bottom";
cin>>str1;
cout<<str2[2];
return 0;
}
string拼接 赋值
string str1;
string str2="top";
str1=str2;//这种用法在数组中不被允许的
string的拼接可以用运算符+将两个string对象合并起来;
strcpy(str1,str2); //把str2的值拷贝给str1 等同于str1=str2
strcat(str1,str2); //把str2的内容添加到str1的后面
这两个函数比上面两个函数多了一个参数(长度N)
strncpy();
strncat();
确定字符串中字符数的方法:
int len = str1.size(); //size()是类的一个方法,
int len1 = strlen(str1);
struct
c++中在声明结构体变量时,struct可省略;
与c中结构体不同的是,c++结构除了成员变量之外,还可以有成员函数;
c++中可以使用赋值运算符=将结构赋值给另一个同类型的结构,这种赋值被称为成员赋值;
struct person
{
string name;
int age;
char sex;
};
person zs={"zhangsan",20,'m'};
//在定义结构的同时完成创建结构变量的工作
struct person
{
string name;
int age;
char sex;
}zs;
//这种没有名称的结构类型,除了在定义结构类型的时创建变量,以后就无法创建这种类型的变量
struct
{
string name;
int age;
char sex;
};
结构数组
person pop[100];
这里的pop是一个person类型的数组,它的每一个元素都是person对象;
cout<<pop[2].name;
在初始化结构数组:
person pop[2]=
{
{"zhangsan",20,'m'},
{"lisi",15,'n'}
};
结构中的位字段
字段的类型应为整型或枚举,可以使用没有名称的字段来提供间距。每个成员都被成为位字段。
struct regi
{
unsigned int sn:4;
unsigned int : 4;
bool goodin:1;
bool goodtor :1;
};
初始化也以通常的方式去初始化这些字段;访问也是。
共用体(union)
共用体是一种数据类型,它能够存储不同的数据类型,但只能同时存储其中的一种类型。
共用体的长度是其最大成员的长度。
用途:当数据项使用的是两种或更多中格式时(不会同时使用),可节省空间;
当结构的其中一个数据成员为共同体时,要访问共用体当中的成员要使用:
结构体变量.共用体变量.共用体成员
若共用体为匿名共用体。其成员将成为位于相应地址处的变量,由于他们的地址相同。所以不需要中间标识符,访问时使用:
结构体变量.共用体变量
枚举(enum)
提供一种创建符号常量的方式
enum spet {red,orange,yellow,green,blue,violet,indigo,ultraviolet};
这条语句完成了:
让spet成为新类型的名称,spet被称为枚举
将{red,orange,yellow,green,blue,violet,indigo,ultraviolet作为符号常量,它们对应的数值为0~7.这些常量叫做枚举量。
在不强制类型转换的情况下,只能将定义枚举时使用的枚举量赋给枚举的变量;
例如:
spet band ;
band= orange;//若band=1则为错误,因为1不是枚举量,orange才是
设置枚举量的值
显示的设置枚举量的值;
enum bits{one=1,two=2,four=4};
指定的值要为整数。也可以显示的定义部分枚举量的值
enum bits{one,two=100,fou};
one在默认情况下为0,后面没有被初始化的枚举量的值将比前面的枚举量的值大1;fou为101
还可以创建多个值相同的枚举量:
enum {zero,null=0,one,numero=1};
其中zero,null都为0,one,numero都为1
枚举量的取值范围
每个枚举都有取值范围,通过强制转换,可以将取值范围中的任何整数值赋给枚举变量。即使这个值不是枚举值。
enum bits{one=1,two=2,four=4};
bits flag;
flag=bits(3);
3不是枚举值,但他位于枚举定义的取值范围内;
取值范围定义:
首先,找出上限,需要知道枚举量的最大值。找到大于这个最大值的,最小值的2的幂。将他减去1,得到的是取值范围的上限,如果最小值不小于0,则取值范围的下限为0;
例如最大值为101,比这个数大的最小2次幂是128,因此上限为127;下限与上限相同,但要加上负号。
选择用多少空间来存储枚举有编译器决定;
指针与c++基本原理
面向对象编程与传统的过程性编程的区别在于。oop强调的是在运行阶段进行决策,运行阶段指的是程序正在运行时,编译阶段指的是编译器将程序组合起来时。
运行阶段决策提供了灵活性,可以根据当时的情况进行调整。
在c++中,使用关键字new请求正确数量的内存以及使用只恨来跟踪新分配的内存的位置。
声明和初始化指针
指针在声明是必须指定指针指向的数据的类型。
在c++中,int* 是一种复合类型,是指向int的指针
在使用指针时,要注意!
在c++中创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储指针所指向的数据的内存。为数据提供空间是一个独立的步骤。
要在对指针应用解除引用运算符之前,将指针初始化为一个确定的,适当的地址。
错误实例:
long *follow;
*follow=233;
指针与数字
要将数字值作为地址来使用,应通过强制类型转换将数字转换为适当的地址类型:
int* pt;
pt=(int *0)0xB9000000;
引用
在声明引用变量时进行初始化,必须在创建时进行初始化;