【C++】Cpp入门基础知识

Cpp入门基础知识

 一,命名空间

    首先应该明白数据在内存中的存储位置,如下图所示;

 理解域为一个代码框,一个变量的作用域为一个代码框,在主函数外定义的无框变量的作用域是全局即整个程序。

在任何一个域中都可以使用全局变量,所以应尽量减少使用全局变量,会让程序不稳定。


在不同的域可以重名定义变量,如下面的变量a,输出时使用该域中的变量。

namespace定义一个域,using将这个域释放出来,都为全局变量;

域可以进行嵌套使用,输出时应使用域作用限定符::

#include <iostream>
using namespace std;//使用命名空间std,将std释放出来
namespace AA
{
	int a = 10;
	int b = 20;
}
namespace BB1 //命名空间的嵌套使用
{
	int i = 1;
	namespace BB2
	{
		int i = 2;
	}
}
int a = 0;//全局变量 存放在静态区中
int main()
{
	int a = 30;
	cout << "hello world" << endl;
	cout << a << endl;
	cout << BB1::BB2::i << endl;// ::域作用使用限定符
	return 0;
}

 二,函数重载及省缺参数

 在C++中存在函数重载,即函数可以重名。但这俩个函数必须参数类型不同(数量,种类,顺序都可)来区别与使用函数。

在程序编译时将俩个函数名分别变为_z3funif和_z3funfi用以区分,3是函数名个数,i f分别为参数类型的首字母。

注意函数的返回值类型不能用于函数的区分。

#include <iostream>
using namespace std;
float fun(int a, float b)
{
	return a + b;
}
float fun(float a, int b)
{
	return a * b;
}
int main()
{
	float a = fun(1, 2.0);
	float b = fun(1.0, 2);
	cout << a;
	cout << b;
	return 0;
}

函数的实参可以省略不写,但需在形参中定义初始值,省参只能从左往右。

分为全省参数和半省参数

//函数省缺参数
int f(int a = 10, int b = 20)
{
	return a + b;
}
int main()
{
	int c = f(20);
	cout << c << endl;//40
	return 0;
}
 三,指针和引用

    引用就是给变量(对象)取了一个别名,共用同一个内存空间。在同一个域中名字不能相同。

const的用法:对const修饰的变量要用常引用,对常量也用常引用,隐身类型转换时开辟了一个具有常性的临时变量要用const修饰。

void f(int **pptr)
{
	*pptr = (int*)malloc(4);
}
void f(const int *&ptr)//不改变加const
{
	ptr = (int*)malloc(4);
}
int main()
{
	int a = 10;
	int& b = a;
	const int c = 20;
	const int& b2 = c;//需要使用常引用
	const int& b3 = 3;//常量具有常性,可以使用常引用
	double d1 = 2.0;
	const int& b4 = d1;//隐式类型转换
	int * p = NULL;
	f(p);//1.函数内改变 2.提高效率
	return 0;
}

函数传参是使用引用可以提高效率。

引用作为返回值

int& Add(int a, int b)
{
	int ret = a + b;
	return ret;
}

int add(int a, int b)
{
	int ret = a + b;
	return ret;
}

int main()
{
	int& ret = Add(1, 2);
	cout << ret << endl;
	Add(2, 4);
	cout << ret << endl;
	return 0;
}

当返回的变量出了作用域还在时可以使用引用。引用的本质也是地址是指针。引用相比指针不需要赋初值,更加灵活。









猜你喜欢

转载自blog.csdn.net/qq_32672481/article/details/73528134