生也有涯,而知也无涯C++入门初探

Posted 再吃一个橘子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生也有涯,而知也无涯C++入门初探相关的知识,希望对你有一定的参考价值。

经历了在校期间一次比赛的打击,让我意识到自己的【编程功底】确实有了一些方法上的严重错误❌!

错误❌❌❌❌❌❌❌❌❌❌❌❌的方面:

仅仅专注于量、笔记的单纯记录而忘了深刻体会每一道OJ题的深层含义【包括:该题考察的方向、自己思考的逻辑、如何代码实现?

经常回顾是个好办法,但是更高效的办法是去通过刷题来将知识联系起来!

题目不在量,而在于【悟】

夜深人静,写博客确实很努力,但是更重要的不是单纯地记录,而是应用。有些内容无关紧要,但是又不想丢掉就记在记事本上,而不是去通篇大论去写博客单纯记录某个陌生点博客是用来记录难点的!!

对于不同的阶段学习的不同的知识,应用的方法都是不同的!

  1. 对于C的学习,写博客是重要但是更重要的是通过刷题来回顾,提高满足感和应用性,不让知识独立起来,而是真正用起来!!
  2. 对于数据结构的学习,相比较写博客而言,【悟】才是最重要的(画递归图、指针变化图...),然后应用刷题!!
  3. 而对于C++的学习,写博客(配合画思维导图是重中之重!!因为他有极其复杂的语法内容,需要经常温习而达到熟练!【在博客记录上,专门记录重难点、易混点,其余内容一笔带过,详细可以看课件!!

建议不要把「精通 C++ 」作为一个一年目标 应该 要把学习语言 作为一个持续的过 ,同时要把语言运用在具体的应用场合中。

刷题网站:

1、leetcode

leetcode中文刷题网站

2、牛客网

牛客网专项训练

C++不仅仅是一门语言,更是一种生活哲学,在以后的工作之余还需要继续挖掘……

本节目标

  • C++关键字
  • namespace解决命名冲突问题  --  命名空间
  • C++输入、输出
  • 缺省参数
  • 函数重载
  • 引用
  • 内联函数
  • auto关键字(C++11)
  • 基于范围的for循环(C++11)
  • 指针空值 -- nullptr(C++11)

2、namespace解决命名冲突问题(命名空间)

(1)命名空间

在全局作用域中(变量、函数、类),我们可能会面临命名冲突。使用命名空间的目的是对标识符本地化,以避免命名冲突或名字污染。

namespace关键字就是解决此类问题的!

(2)命名空间的定义

定义命名空间,需要使用到 namespace 关键字 ,后面跟 命名空间的名字 ,然 后接一对     即可,   中即为命名 空间的成员。

注意:

允许嵌套定义

相同名称的命名空间编译器识别后会合并在一起

当然,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; 

说明:

  1. 使用cout标准输出(控制台)cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空间。
注意:
早期标准库将所有功能在全局域中实现,声明在 .h 后缀的头文件中,使用时只需包含对应头文件 即可,后来将其实现在std 命名空间下,为了和 C 头文件区分,也为了正确使用命名空间,规定 C++ 头文件不带.h ;旧编译器 (vc 6.0) 中还支持 <iostream.h> 格式,后续编译器已不支持,因此 推荐 使用 <iostream>  +  std 的方式。
    2 .  使用 C++ 输入输出更方便,不需增加数据格式控制,比如:整形 --%d ,字符 --%c

 

你觉得展开名字为std的命名空间的全部不好?  那么也可以这样:(展开常用的!项目中可能会用到。)

【一般在做oj题不会这样用,即:第一种     using namespace std;即可】

 详细说明:

 

 

 

以上是关于生也有涯,而知也无涯C++入门初探的主要内容,如果未能解决你的问题,请参考以下文章

吾生也有涯,吾知也无涯_乌拉

吾生也有涯,吾知也无涯

吾生也有涯,吾知也无涯_乌拉(11)

吾生也有涯,吾知也无涯_追随老男孩

吾生也有涯,吾知也无涯_追随老男孩

吾生也有涯,吾知也无涯_乌拉