资讯详情

C++入门学习(二)

📅 2026/10/9 10:00:29 | 华诺云谱 👁 阅读
C++入门学习(二)
1. 引用1.1 引用的实现类型 引用变量名对象名 引用实体引用类型必须和引用实体是同种类型的#includeiostream using namespace std; int main() { int a 1; //int c; int ba;//b是a的别名 int da; int ed; int x 5, y 6; int rx x; rx y; //相当于 x y ,x 和 rx 都变成了 6 coutx yendl; return 0; }1.引用在定义时必须初始化2.一个变量可以有多个引用3.一旦引用一个实体就不能引用其他实体1.2 常引用引用取别名和使用指针时变量访问权限可以缩小不能放大权限放大非constconst , const const权限缩小非const const , 非const 非const#includeiostream using namespace std; int main() { const int a 1; // int b a; a是只读b的类型是int可读可写。编译器会报错 int a1 2; const int b1 a1; // a1是可读可写的b1是只读的 编译通过 //在这个过程中会产生一个临时变量而临时变量具有常性 const int a2 3; int b2 a2; //变量之间赋值没有权限缩小和放大的关系 return 0; }1.3 使用场景1.3.1 引用做参数1.输出型参数2.提高效率#includeiostream using namespace std; void Swap(int a,int b) { int tmp a; a b; b tmp; } int main() { int i 3 , j 4; cout i j endl; Swap(i,j); cout i j endl; return 0; }1.3.2 引用做返回值使用引用返回返回变量出了这个函数的作用域还存在就可以使用引用返回#includeiostream using namespace std; int Sub(int a,int b) { static int c a-b;//需要加static结果才会是2.如果不加结果会是3. return c; } //不加static出了这个函数c就会被销毁 int main() { int d Sub(5,3); Sub(9,6); //cout1233endl; coutdendl; return 0; }1.4 引用和指针的区别引用别名、必须初始化、终身绑定、直接操作、无空引用指针独立变量、可先声明后赋值、可指向别处、需 * 解引用、可为空2. 内联函数inline 是以空间换时间的做法。当代码很长或者有递归/循环时不宜使用内联函数。编译器会自动优化inline 的函数体里面要是有递归/循环等编译器优化时会忽略掉内联。3. auto关键字用auto定义变量时必须初始化(C11)3.1 auto 与指针和引用用auto声明指针类型时auto和auto* 没有区别但用auto声明引用类型时必须加#includeiostream #includetypeinfo using namespace std; int main() { int a 1; auto b a; auto c 2.0; auto d c; cout typeid(a).name() endl; cout typeid(b).name() endl; cout typeid(c).name() endl; cout typeid(d).name() endl; return 0; }3.2 在同一行定义多个变量在同一行声明多个变量时变量的类型必须是相同的否则会编译错误auto c 2.0, g 2; auto e 1, f 2;3.3 auto不能使用的情况1.不能作为函数参数2.不能用来声明数组void Sub(auto a) {} auto arr[5]{1,2,3,6,9};4. 范围for1.for循环后的括号由 “ ” 分成两部分一是范围内用来迭代的变量二是迭代的范围范围必须是确定的2.可以用continue来结束本次循环用break跳出循环#includeiostream using namwspace std; int main() { int arr[5] {9 , 6 , 5 , 2 , 7}; for(auto a : arr) { a1; } for(auto a : arr) { cout a ; } cout endl; return 0; }5.指针空值nullptrNULL 本质是宏通常被定义为0。因此它是一个整数传给函数时容易引发歧义。nullptrC11引入的关键字类型是std::nullptr_t。是真正的空指针。【void*0】#includeiostream using namespace std; void Func(int x) { coutint; } void Func(int* p) { cout pointer; } int main() { //Func(NULL); 会报错产生了歧义,不知道要调用哪一个函数 Func((int*)NULL); Func(nullptr); }
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑