一、基本类型
1. 字符类型有两种, char和wchar_t.
char通常是单个机器字节(byte);
wchar_t 类型用于扩展字符集,如汉字,日文。
Eg: char ‘w’ ‘3’ ‘,’
在单个字符前加L可得到wchar_t , L’a’。
字符串同样,eg: ”rxm,woizhogng”
L”string print”
2. 整型包含整数,字符和布尔值。可以是带符号的,也可以是不带符号的。
默认是带符号的,无符号型加前缀unsigned
Eg: int,long,char
unsigned int,unsigned long,unsigned char.
数据可以加前缀0表示8进制,0x或0X表示16进制。
可以加后缀U或u表示unsigned类型。
3.声明和定义。
变量的定义用于为变量分配内存空间。
可以用extern 声明,表名变量的名字和类型,不分配空间。
Eg: int a=90;
extern int a;//声明,非定义
int a;声明且定义。(值默认)
4.const对象默认为文件的局部变量
通过指定const变量为extern,可以在整个程序中访问const对象。
Eg:extern const int ia=90;
5.typedef 用来定义类型的同义词。
Eg:typedef int age;
typedef double salary;
二、标准库类型
1.string类型
string s;
cin>>s;
string::size_type len=s.size(); //s.size()返回s中字符的个数,其类型是string::size_type
string类型可通过下标访问单个字符,
最后一个字符s[s.size()-1]
string 对象中字符的处理,多数位于cctype头文件中。
#include<cctype>
2.vector类型
#include <vector>
using std::vector;
vector是一个类模板,必须说明其保存何种对象的类型,
eg:vector<int> ivec; vector<string> svec;
向vector添加元素,push_back().
string s;
vector<string> svec;
while (cin>>s)
{
svec.push_back(s);//添加元素
}
4.迭代器
迭代器是一种检查容器内元素,并遍历元素的数据类型。
vector<int>::iterator iter;
eg:以下等价。
for(vector<int>::size_type i=0;i!=ivec.size();++i)
{
ivec[i]=0;
}
for(vector<int>::iterator i=ivec.begin(); i!=ivec.end();++i)
{
*i=0;//使用解引用操作符取其指向的值。
}
const_iterator,只读的,不能对其指向的值修改!
迭代器的算术运算:
ivec-n ivec+n 指向ivec位置n个元素后或前的元素!
ivec-ivec1,两迭代器之间的距离!
三、数组和指针
数组和指针与vector和迭代器类似。尽量多用vector和迭代器。
1.数组
字符数组初始化
char ca1={‘a’,’b’,’c’};//长度为3
char ca2=”abc”; //长度为4,字符串字面值初始化是默认带一空字符。
vector使用vector::size_type作为下标的类型,数组下标的正确类型为size_t。
const size_t len=9;
string strs[len];
2.指针
指针保存的是一个对象的地址。
string s(“rxm”);
string* ps=&s;
指针与数组密切相关,在表达式中使用数组名,该名字会自动转换为数组中第一个元素的指针。
int ia[3]={3,6,9};
int * pia=ia;//pia指向的值为ia[0].
两个指针相减,类型为ptrdiff_t,两指针指向元素的间隔。cstddef头文件中。
int ia[]={3,6,7,4,3,4,3,21};
int *pia=ia;
int *pia1=&ia[7];
ptrdiff_t len=pia-pia1;
cout<<len;
system("pause");
四、表达式
1. sizeof操作符返回对象或类型名的长度。返回类型size_t.
求数组元素个数。
int ia[]={3,6,7,4,3,4,3,21};
cout<<sizeof(ia)/sizeof(*ia);
system("pause");
2.new 和 delete表达式
动态创建对象时,只需要指定其数据类型。
int *pa=new int;
string *ps=new string;
new表达式在自由存储区分配创建一个对象,返回对象的地址,并把地址初始化为定义的指针。
delete pa;delete ps;释放其指针指向的内存空间。
释放后指针变成了悬浮指针,安全的做法。
Pa=0;ps=0.
3.类型转换。