生也有涯,而知也无涯C++入门初探
Posted 再吃一个橘子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生也有涯,而知也无涯C++入门初探相关的知识,希望对你有一定的参考价值。
经历了在校期间一次比赛的打击,让我意识到自己的【编程功底】确实有了一些方法上的严重错误❌!
错误❌❌❌❌❌❌❌❌❌❌❌❌的方面:
仅仅专注于量、笔记的单纯记录而忘了深刻体会每一道OJ题的深层含义【包括:该题考察的方向、自己思考的逻辑、如何代码实现?】
经常回顾是个好办法,但是更高效的办法是去通过刷题来将知识联系起来!
题目不在量,而在于【悟】
夜深人静,写博客确实很努力,但是更重要的不是单纯地记录,而是应用。有些内容无关紧要,但是又不想丢掉就记在记事本上,而不是去通篇大论去写博客单纯记录某个陌生点。博客是用来记录难点的!!
对于不同的阶段学习的不同的知识,应用的方法都是不同的!
- 对于C的学习,写博客是重要但是更重要的是通过刷题来回顾,提高满足感和应用性,不让知识独立起来,而是真正用起来!!
- 对于数据结构的学习,相比较写博客而言,【悟】才是最重要的(画递归图、指针变化图...),然后应用刷题!!
- 而对于C++的学习,写博客(配合画思维导图)是重中之重!!因为他有极其复杂的语法内容,需要经常温习而达到熟练!【在博客记录上,专门记录重难点、易混点,其余内容一笔带过,详细可以看课件!!】
建议不要把「精通 C++ 」作为一个一年目标 , 应该 要把学习语言 作为一个持续的过 程 ,同时要把语言运用在具体的应用场合中。
刷题网站:
1、leetcode
2、牛客网
C++不仅仅是一门语言,更是一种生活哲学,在以后的工作之余还需要继续挖掘……
本节目标
- C++关键字
- namespace解决命名冲突问题 -- 命名空间
- C++输入、输出
- 缺省参数
- 函数重载
- 引用
- 内联函数
- auto关键字(C++11)
- 基于范围的for循环(C++11)
- 指针空值 -- nullptr(C++11)
2、namespace解决命名冲突问题(命名空间)
(1)命名空间
在全局作用域中(变量、函数、类),我们可能会面临命名冲突。使用命名空间的目的是对标识符本地化,以避免命名冲突或名字污染。
namespace关键字就是解决此类问题的!
(2)命名空间的定义
注意:
允许嵌套定义
相同名称的命名空间编译器识别后会合并在一起
当然,namespace里面不仅仅可以定义变量,也可以是函数、结构体等自己想定义的各种全局的内容,只不过是namespace进行了一层” 隔离 “罢了!
在main函数中调用命名空间的变量、函数、结构体
(3)命名空间的使用
命名空间的使用又三种方式:
(1)加命名空间名称及作用域限定符
//使用命名空间
//方式1:加命名空间名称及作用域限定符
namespace qbj
int rand = 10;
int Add(int left, int right)
return left + right;
struct Node
struct Node* next;
int val;
;
int main()
printf("%d", qbj::rand);
qbj::Add(2, 3);
struct qbj::Node next;
return 0;
C语言中也可以用
普通的使用:
注意:
namespace仅仅是对全局变量做一层“ 隔离 ”,来防止命名冲突问题。它仍然是全局变量,放在静态区的!!
嵌套的命名空间的使用
(2)使用using namespace将指定名称的命名空间全部展开(不推荐!这样 隔离就失效了!)
(3)使用using 将指定命名空间某个成员展开(✨强推!!)
//使用命名空间
//方式3:使用using 将指定命名空间某个成员展开
namespace qbj
int rand = 10;
int Add(int left, int right)
return left + right;
struct Node
struct Node* next;
int val;
;
using qbj::Node;
int main()
qbj::rand = 2;
qbj::Add(2, 3);
struct Node head;
return 0;
3、C++输入、输出
#include<iostream>
using namespace std;
int main()
cout<<"Hello world!!!"<<endl;
return 0;
//解释:
#include<iostream>//输入输出流
using namespace std;//C++库的实现在一个叫std的命名空间中,将std命名空间全部展开
int main()
cout<<"Hello world!!!"<<endl;//输出Hello world到控制台,并换行
return 0;
说明:
- 使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空间。
注意:早期标准库将所有功能在全局域中实现,声明在 .h 后缀的头文件中,使用时只需包含对应头文件 即可,后来将其实现在std 命名空间下,为了和 C 头文件区分,也为了正确使用命名空间,规定 C++ 头文件不带.h ;旧编译器 (vc 6.0) 中还支持 <iostream.h> 格式,后续编译器已不支持,因此 推荐 使用 <iostream> + std 的方式。
你觉得展开名字为std的命名空间的全部不好? 那么也可以这样:(展开常用的!项目中可能会用到。)
【一般在做oj题不会这样用,即:第一种 using namespace std;即可】
详细说明:
以上是关于生也有涯,而知也无涯C++入门初探的主要内容,如果未能解决你的问题,请参考以下文章