c++深入理解

函数与参数

计算一个整型表达式

int abc (int a, int b, int c)
{
return a + b * c;
}//a,b,c是函数abc的形参每一个形参都是整型的,调用abc:
int z = abc(2, x, y);
//z = abc(2, x, y).......那么在2,x, y便是分别与a.b.c对应的实参。 
/*
 当调用 abc(2, x, y)是a被赋值2,b被赋值x, c被赋值y。对它们赋值之前进行类型转换,
egg:如果x是double类型其值为3.7,那么b被赋值为3。
*/

当函数运行结束时,形参类型的析构函数负责释放形式参数,当一个函数运行结束时,形参的值不会被赋值到对应的实参中。因此,函数调用不会修改与形参对应的实参的值。

模板函数 

利用模板函数计算一个表达式

template<class T>
T abc(T a, T b, T c)
{
	return a + b * c;
}//这是一段通用代码,T可以是int,double,float ,long......等数据类型。

引用参数 

利用引用参数计算表达式

template<class T>
T abc(T &a, T &b, T &c)
{
	return a + b * c;
}
//如果abc(x,y.z)调用,其中,a,b.c是x,y,z的别名与传值参数的情况不同。

常量引用参数 

利用常量引用计算一个表达式

template<class T>
T abc(const T &a, const T &b, const T &c)
{
	return a + b * c;
}
//用关键字const来指明函数不可以修改引用参数。

返回值 

一个函数可以返回一个值,一个引用或一个常量引用。

#include <iostream>
using namespace std;
int& add(int i, int b);

int main()
{
	
	int c = add(100000000, 1111111);

	cout << c << endl;

	return 0;
}
int&add(int i, int b)
{
	b = i;
	return b;
}
/*
100000000

F:\新建文件夹\myfirst\Debug\myfirst.exe (进程 16788)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
*/

重载函数 

一个函数的签名是有这个函数的形参类型以及形参个数确定。

#include <iostream>
using namespace std;
int fun(int a);
int fun(int a, int b);

int main()
{
	return 0;
}
int fun(int a)
{
	return a;
}
int fun(int a, int b)
{
	return a + b;
}


 动态处理空间的分配     

c++操作符new用来进行动态存储或运行时存储分配,它的值是一个指针,指向所分配的空间。

int* y;
y = new int;
*y = 10;
//合并为int *y=new int ;*y=10;
//或int *y=new int(10);或int*y;y=new int(10);

一维数组和二维数组 

//创建一维数组X其长度为n;
flaot* x = new float[n];//操作符new为n个浮点数分配了内存空间,并返回第一个浮点数空间的指针。
//可以用x[0],x[1]......x[n-1]的形式访问。
delete[]x;//c++中的delete用来释放new开辟的空间。

int* p = new int;
delete p;

对于二维数组,c++采用多种机制来说明二维数组,但编译时就要知道两位的大小。

创建一个二维数组

template <class T>
void make2dArray(T**& x, int numberofRows,int numberOfColumns)
{
	x = new T * [nmberofRows];//创建行指针
	for(int i = 0; i < numberofRows; i++)
	{
	x[i] = new T[numberOfColumns];//为每一行分配空间。
}

}

 释放二维数组

template <class T>
void make2dArray(T**& x, int numberofRows)
{
	//删除行数组空间
	for(int i = 0; i < numberofRows; i++)
	{
	delete[]x[i];
	delete x;//删除行指针。
	x = nullptr;
}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值