输入输出
C语言的输入与输出函数是scanf和printf函数,而C++增加了标准输入输出流cin和cout,使用它们需声明iostream头文件。
使用例:
cout:
int a=1,b=2;
cout<<"a="<<a<<"b="<<b<<endl;
cin:
int c;
cin>>c;
函数重载
C语言中规定同一作用域中不能有相同名字的函数,但C++允许在同一作用域中用同一函数名定义多个函数,这些函数的参数个数和参数类型不相同,这些同名的函数可以分布实现不同的功能,这就是函数的重载,即一个函数名多用。
例:
int max(int a,int b,int c){
if(b>a) a=b;
if(c>a) a=c;
return a;
}
float max(float a,float b,float c){
if(b>a) a=b;
if(c>a) a=c;
return a;
}
long max(long a,long b,long c){
if(b>a) a=b;
if(c>a) a=c;
return a;
}
函数模板
函数模板,指的是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表这个通用函数就称为函数模板。在调用函数时会根据实参的类型来联系模板中的虚拟类型,从而实现不同函数的功能。
定义函数模板的一般形式:
template <typename T>
通用函数定义
或
template<class T>
通用函数定义
使用例:
#include<iostream>
using namespace std;
template <typename T>
T max(T a,T b,T c){
if(b>a) a=b;
if(c>a) a=c;
return a;
}
int main(){
int a1=1,a2=2,a3=3,a;
float b1=1.1,b2=2.2,b3=3.3,b;
long c1=1111,c2=2222,c3=3333,c;
a=max(a1,a2,a3);
b=max(b1,b2,b3);
c=max(c1,c2,c3);
cout<<"max-a:"<<a<<endl;
cout<<"max-b:"<<b<<endl;
cout<<"max-c:"<<c<<endl;
return 0;
}
变量的引用
在C++中,变量的引用就是指变量的别名,建立引用的作用是为了一个变量再起另一个名字,以便在需要时可以方便,间接地引用该变量。
例:
int a;
int &b=a;//声明b是一个整型变量的引用变量,它被初始化为a
经过这样的声明后,使用a和b的作用相同,都代表同一变量。
在上述声明中,&是引用声明符,此时它并代表地址,不要理解为把a的值赋给b的地址。
使用例:
#include<iostream>
using namespace std;
int main(){
int a=10;
int &b=a; //声明b是a的引用
a=a*a; //a的值变化了,b的值也要一起变化
cout<<a<<b;
b=b/5; //b的值变化了,a的值也要一起变化
cout<<a<<b;
return 0;
}
运行结果:
100 100
20 20
内置函数
在编译时将所调用函数的代码嵌入到主调函数中,这种嵌入到主调函数中的函数称为内置函数,又称内嵌函数。
指定内置函数的方法很简单,只需在函数首行的左端加一个关键字inline即可。
例:
#include<iostream>
using namespace std;
inline int max(int a,int b,int c){
if(b>a) a=b;
if(c>a) a=c;
return a;
}
int main(){
int i=1,j=2,k=3,m;
m=max(i,j,k);
cout<<"max="<<m<<endl;
return 0;
}
运行结果:
max=3
程序分析:
在定义函数时指定它为内置函数,因此编译系统在遇到函数调用max(i,j,k)时,就用max函数体的代码代替max(i,j,k),同时将实参代替形参。这样,m=max(i,j,k)就被替换成
{
a=i;b=j;c=k;
if(b>a) a=b;
if(c>a) a=c;
return a;
}
动态分配/撤销内存的运算符
在C语言中,malloc和free是用来分配和撤销内存空间的,但使用malloc函数时必须要指定需要开辟的内存空间的大小,调用形式为malloc(size),size是字节数,需要事先求出或使用sizeof运算符求出。
此外,malloc函数只能从用户处知道应开辟空间的大小而不知道数据的类型,因此无法使其返回的指针指向具体的数据。其返回值一律为void * 类型,必须在程序中进行强制类型转换,才能使其返回的指针指向具体的数据。
C++提供了较为简单而功能较强的运算符new和delete
new运算符使用的一般格式为:
new 类型[初值];
使用new分配数组空间时不能指定初值
delete运算符使用的一般格式为:
delete[]指针变量
使用例:
#include<iostream>
#include<string.h>
using namespace std;
struct student{
char name[10];
int num;
char sex;
};
int main(){
student *p;
p=new student;
strcpy(p->name,"PAG");
p->num=10110;
p->sex='M';
cout<<p->name<<" "<<p->num<<" "<<p->sex<<endl;
delete p;
return 0;
}
运行结果:
PAG 10110 M