【C++】Cpp入门基础知识
来源:互联网 发布:淘宝网奥特曼玩具 编辑:程序博客网 时间:2024/05/29 15:51
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;//40return 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;}
当返回的变量出了作用域还在时可以使用引用。引用的本质也是地址是指针。引用相比指针不需要赋初值,更加灵活。
阅读全文
1 0
- 【C++】Cpp入门基础知识
- CPP入门基础知识
- CPP入门基础知识
- CPP入门基础知识
- 《CPP入门基础知识》
- CPP入门基础知识
- cpp入门基础知识
- Cpp的入门基础知识
- cpp入门基础知识
- CPP入门基础知识
- CPP入门基础知识
- CPP入门基础知识(一)
- c语言基础知识入门
- 【C++】入门基础知识
- cpp入门
- linux程序设计入门----基础知识:linux下C语言编程基础知识
- C语言入门基础知识(一)
- cpp 两点有用的基础知识
- hdoj1006 Tick and Tick(数学问题,解不等式,求并集)
- iOS 学习笔记之NSPredicate 模糊、精确、查询
- python中的append和expend
- html手机自适应
- imgproc模块--轮廓搜索
- 【C++】Cpp入门基础知识
- css字体加粗
- Jfinal(二)--------Controller层get 、post接收参数
- Java线程池
- 小米智能云-春招实习-面经
- 外观模式
- Hashmap 和Hashtable的区别
- 【caffe-Windows】以mnist为例的hdf5单标签处理——matlab实现
- android 网络框架 比较 选择