1:输入输出流
(1)#include<iostream> C++标准输入输出流的库函数
(2)using namespace std; //命名空间
(3)标准输入流:cin
cin标准输入流代表的是标准的输入设备键盘。cin>>a>>b>>c,在输入一组变量的时候可以用空格回车,tab键分割。输入字符串的时候,空格代表字符串结束
(4)标准 输出流,cout //标准输出设备,在程序中通常指的是屏幕。cout<<a<<b<<c<” ” endl都表示换行
2:针对于C语言的变化
(1) const修饰符
#define PI 3.14 定义常量
const char * pc = ‘’abcd” 表示pc指针指向的是一个字符串常量,所以不能改变常量的数值
char * const pc = ‘’abcd” 表示 pc是一个常量地址数值,指向的是’abcd”的地址不能改变这个地址数值但是可以改变字符串的数值。
(2)内联函数:在函数前面加上inline关键字就是内联函数
引入内联函数的目的:是为了减少系统的开销,提高运行效率。
① 内联函数在系统第一次调用之前必须进行完整的定义。
② 在内联函数内部一般不能有复杂的控制语句,例如if,for等语句。
③ 将频繁调用的函数定义为内联函数一般不超过5行。
④ 内联函数示例:就是把函数内部的代码直接插入到主函数里面。
#include<iostream>
using namespace std;
inline int box(int i,int j ,int k){
return i*j/k;
}
int main(void){
int a,b,c,v;
cin>>a>>b>>c;
v = box(a,b,c);
cout<<"a*b/c "<<v<<endl;
return 0;
}
常见错误:char a[20];
a = “str1”; //不能把常量char[4]类型复制给 const char 20类型的数组
应该使用:strcpy
(3)带有默认参数的函数
一般来说函数的参数的个数应该与形参的个数相同,但是C++允许实参个数与形参的个数不同,在说明函数原型的时候,为一个参数或者多个参数可以指定默认形参。
Int area( int x = 5 , int y =10 )
注意事项:
默认参数都应该声明在不指定默认参数的右边,在函数调用的时候,如果某个参数省略,则其后的参数皆应省略而采取默认值,不允许某个参数省略之后,在给其后的参数默认。
如果函数定义在调用之前,则应该在函数定义中指定默认数值,声明在前声明中指出,但是如果同时指定,有的C++编译系统会报(重复指定默认数值的错误)。
Int fun( int I ,int j=5, int n) //错误
Fun(,5) //报错
(4)函数重载
函数重载的条件:函数名相同,参数个数类型不同
例如:Area( int i), Area(double i), Area( double I, int j);
(5)作用域运算符
通常情况下:如果两个同名变量,一个是全局的,另一个是局部的,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量,如果在希望在局部变量的作用域内使用全局变量,可以在该变量名的前面加上::代表全局变量。
(6)强制类型转换
Int I = 10 ;
Double X = ( double)I; //C
Double X = double(i); //C++
( 7 ) 运算符new和delete
1:普通类型申请和释放内存变量
C语言使用malloc() 和free() 函数来申请和释放内存
C++ 使用new 和 delete 来申请和释放内存
指针变量 = new 类型;
Int *pi;
pi= new char;
char *pc;
pc = new char;
double *pd;
pd = new double;
运算符用来释放内存: delete 指针变量名
2:数组类型申请和释放内存
数组内存地址的申请和释放:
int *p = new int[10];
int *pi = new int[2][3][4];
int *p = new(99); //动态分配内存并把99作为初始数值赋值给p
数组释放内存:
delete []指针变量名
delete []pi;
//二维数组指针赋值
int *p = new int(99); //
cout<<(*p)<<endl;
delete p;
int **a = new int*[3];
int i=0,j=0;
for( int i = 0 ; i<3 ; i++)
a[i] = new
delete []a;
( 8) 引用
1.引用的概念是起了一个别名
类型 & 引用名 = 已定义的变量名
引用和其代表的变量共享同一内存单元,当i发生变化的时候,J也发生变化。
引用注意的地方:
(1)引用不是一种独立的数据,他必须与某一种类型关联,在声明引用的时候,必须立即对其进行初始化,不能再声明完成之后赋值。
Int I =1;
Int &j = I;
Int &j //错误
(2)指针和引用的区别
指针本质是地址值,就是内存的数值,引用的数值是真实的数值。
Int I = 5 ;
Int *ptr = &I;
Int &ptr = I;
(3)引用在初始化后不能再被重新声明为另一个变量的引用
Int I , k;
Int &j = I;
J = &k;
(9)计算Fibonacci小练习
#include<iostream> using namespace std; double Fibonacci( int n ) { if ( n == 1 || n ==2 ) return 1; else if( n < 0) { return 0; } else{ return Fibonacci(n-1) + Fibonacci(n-2); } } int main(){ int n=20; double* sum = new double; *sum = Fibonacci(n); cout<<(*sum)<<endl; delete sum; }