从C到C++

从C到C++,第1张

从C到C++

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)、带默认形参值的函数

#include
using 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项:

#include 
using 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;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5611527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存