java程序员学习CPP语法手册(一)
(一) 初级知识
1 输入输出
#include <iostream>
using namespace std;
int main(){
cout<<"hello world" <<endl;
return 0;
}
上例中的"cout<<"等价于system.out.print,endl(end of line )代表回车换行操作
另外"cin>>" 作为输入运算符,可以获取从控制台输入的数据。
2 用const定义常量
const定义常量,具有变量的属性,有数据类型,可以用指针指向他,在程序运行过程中的只是固定的,类似于java语言中的final。
3 函数定义与申明
与java一致,且也可以重载
4 函数模板
这个函数模板就是建立一个通用函数,这个函数的函数类型和形参类型不具体指定,用一个虚拟的类型代表,在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,实现了不同函数的功能。定义模板的一般形式为:
template <typename T>
T show(T a,T b){}
使用函数模板比函数重载更方便,更简单,但是只适合函数的参数个数相同而类型不同,且函数体相同的情况。
感觉有点像java里面的泛型。
5 有默认参数的函数
c++在函数调用时给形参一个默认值,就减少了重复。实参个数和形参个数不需要相同。但是默认参数要放在形参列表中的最右端,否则可能就会被覆盖,或者参数不够而报错。
要注意的是必须在函数调用之前在函数定义(定义在调用前)或者函数声明(定义在调用后)进行给出默认值。而且定义和声明都给默认值的情况下,取声明的值,因此最好只在函数声明时指定默认值
void func(int n, float b=1.2, char c='@'){
cout<<n<<", "<<b<<", "<<c<<endl;
}
这里就是这个方法默认传了两个参数,如果我们在调用的时候不指定,那么就默认是这个值,这个java没有。
比如:func(10, 3.5, ‘#’); 输出为10, 3.5, #
6 变量的引用
在c++中,变量的引用就是变量的别名。如下:
int a;
int &b = a; #声明b是一个整型变量的引用,初始值为a
这里的&是"引用声明符",并不代表地址,在声明一个引用时,必须同时进行初始化,代表哪一个变量。
在建立引用时只有声明,没有定义。
引用的注意事项:
(1)引用必须与某一种类型的数据相联系。
(2)引用与其所代表的变量共享同一内存空间。
(3)区分&a是声明引用变量还是取地址,就看前面有没有类型符。
(4)可以给一个变量声明多个引用。
(5)引用在初始化后不能再被重新声明为另一个变量的别名。
7 变量的引用作为函数参数
c++之所以增加"引用",是为了利用它作为函数参数,是为了让函数的数据传递更方便。函数的参数传递只要有以下两种情况。
-
将变量的引用作为形参:
c++把变量的引用作为函数形参,就可以指向同一地址单元。对引用型形参的初始化是在函数调用时通过虚实结合实现的。 -
引用和使用指针变量做函数形参的区别:
使用引用不必使用指针变量,就不需要另外开辟内存空间,调用时实参不必加&,系统直接传的是实参的地址,也不必使用指针运算符*。 -
引用细节:
(1)不能建立void的引用。
(2)不能建立引用的数组。
(3)可以将变量的引用的地址赋给一个指针,此时指针指向的是原来的变量。但是不能直接建立指向引用类型的指针变量。
int a = 2;
int &b = a;
int *p = a; #p相当于a变量的地址
(4)可以建立指针变量的引用
int i = 3;
int *b = &a;
int* &pt= b #pt相当于b
(5)可以用const对引用加以限定,不允许改变引用的值
int i = 3;
const int &a = i; #声明常引用,不允许改变i的值
(6)可以用常量或表达式对引用进行初始化,但此时必须用const做声明
int i = 3;
const &a = i + 2;
上面的const &a = i + 2;语句相当于:
int temp = i + 2; #临时变量在内部实现,用户不能访问
const int &a = temp;
也可以用不同类型的变量进行初始化:
double d = 3.252;
const int &a = d;
相当于:
int temp = d;
const int &a = temp;
此时a的值为3.
上面是c++的基础,之后的文章会向大家介绍c++的一些高级的语法。