C++:定义与声明

一些基本概念

(1)对象是指一块能存储数据并具有某种类型的内存空间,简言之,对象是具有某种数据类型的内存空间,而变量则为命了名的对象;
(2)数据类型:算术类型,类(class:类,类体),结构(struct:结构,结构体),指针,数组。
(3)标准库类型:字符串:string,向量:vector。
(4)C++语言自己定义的基本内置类型包括两大类:算术类型和空类型(void),算术类型包括:布尔类型(bool:布尔类型)、字符型(char:字符,wchar_t:宽字符,char16_t:16位Unicode字符,char32_t:32位Unicode字符)、整型(int:整形,short:短整型,long:长整型,long long:长整型)、和浮点型(float:单精度浮点数,double:双精度浮点数,long double:扩展精度浮点数),空类型不对应具体的值,它的一种应用是,当函数不返回任何值时使用空类型作为返回类型,表示函数无返回值。
(5)sizeof运算符:返回一条表达式或一个类型名字所占的字节数:sizeof(type),sizeof expr。
(6)char:8bits,int:32bits,short:16bits,float:32bits,double:64bits,long double:64bits。

定义与声明

引用(Reference)

int ival=1024;//定义int型变量,并赋初值1024
int &refval=ival;//定义一个指向整型变量ival的引用refval

引用(reference)为对象起了另外一个名字,引用类型引用(refers to)另外一种类型。定义引用需在引用名前以’&'为开头;

引用非对象,它不占内存空间,也没有实际地址,其只是为一个已经存在的对象所起的另外一个名字。

指针(Pointer)

int ival=42;
int *ip;//定义一个指向int型对象(或说int型变量)的指针
ip=&ival;//取变量ival的地址赋给指针ip,让指针ip指向变量ival,其中,&为取地址符
int ival1=*ip;//对指针ip解引用,得到指针所指向的对象,即变量ival,并把此对象的值赋给新定义的int型变量ival1,其中'*'为解引用符

const限定符

const int size=512;//定义一个整型常量,也可说定义一个整型的const变量,并赋初值512
const int &r1=size;//定义一个指向整形常量的引用(常量引用)r1,这是一个对常量的引用

const double pi=3.14;//定义一个双精度浮点型常量,赋初值3.14,其值不能改变
const double *ptr=π//定义一个指向常量的double型指针,并把变量pi的地址赋给指针(一个指向常量的指针)

int errNumb=0;//定义一个整型变量
int *const curErr=&errNum;//定义一个常量指针,指针将一直指向errNum
const double pi=3.14159;//定义一个double型的常量
const double *const pip=π//定义一个指向常量对象的常量指针

因为const对象一旦创建后其值就不能再改变,所以const对象必须初始化,或者说const对象必须初始化,而一旦初始化完成,则它的值就不能再改变。

指向常量的指针表示指针所指向的对象的值不能改变,但指针本身所存的对象地址却是可以改变的,而要想存放常量对象的地址,只能使用指向常量的指针;

指针是对象而引用不是,因此如其他对象类型 一样,可以把指针本身定义为常量,即,对指针初始化后,指针所存储的对象地址就不能再改变。这种指针称为常量指针(const pointer)。

类型别名

typedef double wages;//定义数据类型double的别名为wages,wages是double的同义词
typedef wages base,*p;//base是double的同义词,p是double*的同义词
wages hourly,weekly;//等价于double hourly,weekly;

using SI=int;//SI是int类型的同义词
SI week;//等价于int week;

类型别名是一个名字,它是某种类型的同义词。使用类型别名的主要作用在于,让复杂的类型名字变得简单明了、易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的。

类型别名和类型的名字等价,只要是类型的名字能出现的地方,就能使用类型名。

C++ 11标准规定了一种新的定义类型别名的方法:使用关键字using作为别名声明的开始,其后紧跟别名和等号,其作用是把等号左侧的名字规定成等号右侧类型的别名。

标准库类型string

#include <string>
using std::string;//或using namespace std;

string s1;//定义一个string类型的变量,默认初始化,s1是一个空字符串

string s2=s1;//s2是s1的副本
string s2(s1);//等价于s2=s1,s2是s1的副本

string s3="hiya";//s3是“hiya”这个字符串字面值的副本:拷贝初始化
string s3("hiya");//等价于s3="hiya",s3是字面值“hiya”副本:直接初始化

string s4(5,'c');//s4的内容为含5个字符的字符串“ccccc”:直接初始化

标准库类型string表示可变长的字符序列,使用string类型必须首先包含string头文件和声明使用标准命名空间std中string的这个名字。

猜你喜欢

转载自blog.csdn.net/yiminghd2861/article/details/82945815