1、标准输入/输出流
—键盘(cin)、显示器(cout)
—相关声明语句:
#include//标准输入/输出流的头文件 using namespace std; //声明命名空间std
—语句转换:
//C double c,f; scanf("%lf",&c); f=c*1.8+32; printf("华氏温度=%lfn",t); //C++ double c,f; cin>>c; f=c*1.8+32; cout<<"华氏温度="< cin>>变量1>>变量2>>...>>变量n; cout<<表达式1<<表达式2<<...<<表达式n; endl表示换行显示2、变量初始化
int x=10,y;//C语言 int x(10),y;//C++语言3、符号常量
#define PI 3.14 //C语言 const 数据类型 常变量名 = 初始值;//C++4、引用及函数见参数的引用传递
(1)、访问变量内存单元
—变量名访问:
cout << x;—指针访问:
int *p;p = &x;cout << (*p);—C++新增 引用 访问:
已有变量的别名:(共用数据)
引用类型 &引用变量名 = 被引用变量名;//&是引用变量说明符int &xa = x;//前后应有相同的数据类型 或者 int x,&xa = a; cout << xa;5、特殊形式的函数
(1)、带默认形参值的函数
#includeusing namespace std; double Exchange(double amount, double rate = 6.1104) { return amount / rate; } int main() { cout << Exchange(500) << endl; cout << Exchange(500,6.9698) << endl; return 0; } —语法:
带默认值的形参必须定义在形参列表的后面:
void fun(int p1=10,int p2=20,int p3=30); //对 void fun(int p1,int p2=20,int p3=30); //对 void fun(int p1=10,int p2=20,int p3); //错(2)、重载函数
如果两个函数的形参个数不同,或数据类型不同,那么这两个函数就可以重命名。
//111111 int Max(int x,int y) { return ((x>y)?x:y); } //222222 double Max(double x,double y) { return ((x>y)?x:y); } //333333 int Max(int x,int y,int z) { int m; m = (x>y)?x:y; m = (m>z)?m:z; return m; }—根据形参实参自动匹配(数据个数和数据类型来区分调用)
cout << Max(9,5);//自动调用:int Max(int x,int y) cout << Max(9.0,5.0);//自动调用:double Max(double x,double y) cout << Max(9,5,17);//自动调用:int Max(int x,int y,int z)(3)、内联函数(Inline)
原理:编译源程序时将函数代码直接嵌入到每个调用语句处,而在执行时不再进行函数跳转和数据传递。
只有在函数调用次数很大很大的时候才会有突出的效率。
Inline double Exchange(double amount, double rate = 6.1104)6、命名空间
—在命名空间中定义函数和全局变量
namespace Tom { int x,y; void fun1() {......} void fun2() {......} }使用方法:
( :: 是作用域运算符)
Tom::x = 10; Tom::fun1();using Tom::x; using Tom::fun1; x = 10; fun1();using namespace Tom; x=10; fun1();7、动态内存分配
//C —分配内存:malloc函数 —释放内存:free函数 //C++ —分配内存:new运算符 —释放内存:delete运算符C++语法:
(1)、单个变量的动态分配与释放
指针变量名 = new 数据类型(初始值);//不需要初始化也可以省略(初始值) delete 指针变量名;int *p;//为了动态分配一个int型变量,需预先定义好一个int型指针变量 p = new int;//使用new运算符动态分配一个int型变量,无变量名 //将所分配内存单元的首地址赋值给指针变量p *p = 10;//通过指针变量p间接访问所分配的内存单元,向其中写入数据10 cout << *p;//通过指针变量p间接访问所分配的内存单元 delete p;//内存使用完后,用delete运算符释放该内存空间int *p = new int(10);(2)、一维数组的动态分配与释放
注:动态分配的数组变量不能初始化;
指针变量名 = new 数据类型 [整数表达式]; //整数表达式可以是单个常量、变量或是一个整数表达式,其结果必须是正整数; delete []指针变量名;int *p = new int[5];//动态分配一个int型一维数组变量,包含五个数组元素 *(p+1) = 10;//通过指针运算符访问第1个元素,向其中写入数据10 //或通过下标运算符访问第一个元素:p[1]=10; cout << *(p+1);//通过指针运算符访问第一个元素,读出数据10并显示出来 //或通过下标运算符访问第一个元素:cout << p[1]; delete []p;//内存使用完后,用delete运算符释放该数组变量所分配的内存空间显示Fibonacci数列前N项:
#includeusing namespace std; int main() { int N;// 定义一个int型变量N cin >> N;//键盘输入要显示数列的前多少项,将该数值保存在变量N中int *p = new int[ N ];// 动态创建包含N个元素的数组,用于保存数列的前N项p[0]=0;p[1]= 1;//指定数列的前2项 int *p = new int[N];//动态创建包含N个元素的数组,用于保存数列的前N项 p[0] = 0; p[1] = 1;//指定数列的前两项 int n;//为循环语句定义好循环变量n for (n = 2; n < N; n++)// 使用循环结构计算出剩余的数列项 p[n] = p[n - 1] + p[n - 2];//每一项等于其前2项之和 for (n = 0; n < N; n++) // 使用循环结构遍历显示数组 { cout << p[n] << ",";//各数列项用逗号隔开 if ((n + 1) % 5 == 0) cout << endl;// 一行显示5项,即每5项换一行显示 } delete[]p;//数组使用结束,动态释放其内存空间 return 0; } 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)