【C++要笑着学】关键字 命名空间 输入和输出

?? ?? ?? ?? ?? 火速猛戳订阅??《C++要笑着学》 ?? 趣味教学博客 ?? ?? ?? ?? ??

写在前面:

本章将正式开始 C++ 的学习,将深入浅出地讲解。本篇将以HelloWorld 开始,以 HelloWorld 结束。通过这段代码,讲解C++中的命名空间和输入与输出。话不多说,让我们开始吧!


Ⅰ. 初探 HelloWorld

“深”入浅出

所有的伟大,都源于一个勇敢的开始。学习一门语言当然是要从HelloWorld 开始!

① 首先打开我们的编译器,我用的是 VS2077 VS2022:

打开编译器创建完新项目后,右键源文件,点击 “添加新建项” ,名称我们就取为 test.cpp,这样我们的代码就能很好地创建出来了:

?? 创建完毕后,我们就可以开始打代码了:

#include <iostream>
using namespace std;

int main()
{
	cout << "Hello,World!" << endl;

	return 0;
}

如果你不知道 using namespace、cout、endl 这些是什么,这都没有关系,我们下面会慢慢讲解,不用着急。

?? 完成后运行一下代码:

成功打印出来了。

?? 我们再试一试C语言的 HelloWorld:

#include <stdio.h>

int main()
{
	printf("Hello, World!");

	return 0;
}

?? 运行结果如下:

?? 我们发现,也是可以输出结果的。因为 C++ 是 C语言的超集。

好了,我们已经精通C++ 了,本专栏完结撒花!

Ⅱ. 关键字

0x00 关键字

C++ 共计 63 个关键字,其中包括 C 语言的 32 个关键字。

这里我们只是看一下 C++ 有多少关键字,不会对关键字进行具体的讲解,我们后续都慢慢会学到的。这里把关键字表列出来,只是为了能够混个眼熟,我们命名时要避开这些关键字!

C++98 关键字

Ⅲ. 命名空间

0x00问题引入

在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称都会存在于全局作用域中,这么一来就会导致命名的冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染。我们刚才 HelloWorld 代码中的 namespace 的出现,就是针对这个问题的。

?? 为了能够让大伙理解命名空间的存在是多么的合理,我们来故意踩一下命名冲突的坑。

在 stdlib 库中有一个生成随机数的函数rand() ,相信大家都认识,但是我们假装某个人不知道 stdlib 库中有一个叫 rand 的函数存在,因此在定义变量时给变量取名为 rand

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int rand = 233;
	printf("%d
", rand);	 // 这里到底是打印我们自己定义的rand,还是stdlib里的?

	return 0;
}

我们知道,#include 包含头文件,头文件里的内容是会被展开来的。当展开头文件时,stdlib 库中有一个叫 rand 的函数,我这里又定义了一个叫 rand 的变量,此时就冲突了!

冲突了,那么问题来了,我们这里printf打印出来的会是什么呢?

编译器的寻找规则: 局部找 → 全局找 → 找不到(报错)。

或许他打印出什么并不重要,但是大家应该能够体会到命

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值