1.命名空间
命名空间是程序设计者在内存块中自定义的一个一个的域,为了防止多变量的变量名相同导致程序运行的过程中发生冲突,于是程序设计者可以将许多块代码区分开,把全局实体存放在不同的命名空间中,在命名空间里的全局实体只在本空间内有效,从而使程序顺利的运行下去。
例如:namespace data
{
int year;
int month;
int day;
}
如果我们需要使用里面的年这个变量:data::year
2.输入输出流
在输入和输出时,数据如流水一般从一头传递到另一头,所以形象的称为输入输出流。
在输入数据时,数据先从键盘输入,输送到内存中,此时内存为每一个数据开辟一个内存缓冲区,然后用提取运算符' >>'从输入缓冲区中提取数据输送给程序中的有关变量。
在输出数据时,当用cout和‘ <<’运算符向显示器上输送数据时,此时内存为每一个数据开辟一个输出缓冲区,先将数据运输到这些输出缓冲区中,直到缓冲区满了或者遇到endl后数据会直接从缓冲区直接输送到显示器上打印出来。
3.重载
c++允许用同一个函数名定义多个函数,这些函数的参数类型不同或者参数个数不同,叫做函数的重载。
由于函数名的修饰规则,所以C++支持重载
相同的函数名在编译过程中编译器会根据函数参数类型或者个数的不同将相同的函数名改为不同的名称。
4.c++缺省参数
c++中由于函数的传参情况产生缺省参数,缺省参数分为半缺省和完全缺省。
半缺省即函数在传参的过程中没有根据形参的个数传递参数,而是只传递了部分参数,其余的形参会采用其默认参数为自己赋值,缺省只能从右向左。
完全缺省即函数在传参的过程中没有传递数据给形参,此时形参全部采用其默认参数为自己赋值。
5.指针和引用
指针:储存地址的变量,如果定义了一个变量,在编译时内存就给这个变量分配了一定的空间,例如一个int型变量内存给分配4个字节大小的内存空间,内存区的每一个字节都有一个编号,这就是地址,将地址放入一个变量中,这个变量就是指针,可以通过这个指针变量来间接访问存储的数据。
使用方法:例如:int a=20;
int *pro=&a;
&:取地址运算符
* :指针运算符
指针作为参数:指针作为形式参数时,实参需要传递数据的地址,指针作为实参时,形参需要使用二级指针来接受,使用指针传参可以改变数据的值。
例如:指针作为形参:void add()
{
..........
}
int main()
{
int a=10;
add(&a);
return 0;
}
指针作为实参:void add(int **a)
{
..........
}
int main()
{
int *a;
add(&a);
}
使用指针做返回值,直接得到的是一个地址,可通过对其 * 运算后得到地址所包含的数据。
引用:引用就是为变量起了个别名,例如:int a=10;
int& b=a;
此时a就是10,b就是a的别名(即小名),改变a就是改变b,改变b也等于改变了a。
引用做为参数:int add (int& a)
{
..........
}
int main()
{
int b=10;
add(b);
}
引用作为返回值:引用做返回值可以进行连续赋值。
指针和引用的区别:引用一但初始化则不能改变引用的关系,指针可以不断的修改指向的空间。
引用的自增和指针的自增不一样,指针的自增是所指向空间的改变,引用自增是变量值得改变。
引用必须指向有效的变量,指针可以为空。
引用的sizeof为变量的大小,指针的sizeof为地址的大小。