【小梦C嘎嘎——启航篇】基本语法格式:namespace ?

news2024/12/24 21:12:44

基本语法格式:namespace ?😎

  • 前言🙌
    • namespace 是什么?
    • namespace 的意义何在?
  • 总结撒花💞

追梦之旅,你我同行

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
在这里插入图片描述

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C++入门篇】基本语法格式:namespace 的相关知识。都是精华内容,可不要错过哟!!!😍😍😍

namespace 是什么?

    我一开始学C嘎嘎的时候,老师一上来就跟我说要写下面这两句代码,没有半点解释,就说以后写C嘎嘎代码就要包括这两句代码就行了。

#include<iostream>
using namespace std

namespace 的意义何在?

    为什么要这样写呢?当时我感觉到一脸懵逼。想必大家当时一开始学习C嘎嘎的时候也有这样的一个疑问。然后通过自己的瞎琢磨,对这个东西也有了一点点的理解。
    我们知道,C嘎嘎是C的进阶版,相当于是C语言的基础上进行一个补充和完善的一套语言。而namespace的出现,其实就是为了弥补C语言的一个不足。我们知道,当多人协同开发的时候,当每一个人都写自己的代码时,没准自己写的代码在函数的命名和变量名上和别人的命名是一样的,当将所有代码文件进行一个整合时就会出现重定义的问题。解决的办法就是修改其中一人的代码。然后又遇到新的问题,修改谁的代码?如果彼此都不愿意,还会引发后面的一系列复杂的问题的发生。睿智的C嘎嘎之父发现了C语言的这个问题,于是在C嘎嘎上,增加了namespace这个东西。namespace,其实是一个命名空间。它的作用就是解决命名冲突,也就是重定义的问题
    C嘎嘎是兼容C语言的,因此C语言的语法很多都是可以在C嘎嘎编译器文件上进行使用的。举个栗子

#include<iostream>

namespace tai
{
	int a = 0;
}
int main()
{
	int a = 0;
	printf("%d ", a);
}

运行截图:
在这里插入图片描述

上述代码,我们首先创建了一个命名空间域,这个名字可以任意取,但是也有限制,不要和关键字相同。我用C语言的printf在C嘎嘎文件上也可以进行一个编译运行。这里打印输出的是主函数里面的a,这是由于局部优先原则,这里面和C语言上是一致的。那么,如何让他访问命名空间域的变量a呢?很简单,我们只需要借助 :: 域作用限定符。如下面代码所示:

#include<iostream>

namespace tai
{
	int a = 1;
}
int main()
{
	int a = 0;
	printf("%d ",  a);
}

运行截图:在这里插入图片描述
因此,在自己编写的命名空间域中,是可以定义和外面相同的变量和函数这些的。不会发生命名冲突的问题。而在多个文件中,一个文件和另一个文件的代码有关命名冲突的问题就可以通过每个文件都设置一个自己的命名空间域,就可以很好的解决这个问题。方法和上面的栗子是一样的,这里就不演示啦。
namespace也是可以进行嵌套使用的

 //可以嵌套
namespace sql
{
	int a = 0;
	namespace bit
	{
		int rand = 0;
		void func()
		{
			printf("func()\n");
		}

		struct TreeNode
		{
			struct TreeNode* left;
			struct TreeNode* right;
			int val;
		};
	}
}


int main()
{
	printf("%p\n", rand);
	printf("%p\n", sql::bit::rand);

	sql::bit::func();

	struct sql::bit::TreeNode node;

	return 0;
}

访问的时候,就需要借助 ::域作用限定符 一级一级的访问即可。

通常,我们使用namespace时,前面都会使用using,这样我们就可以省去 ::域作用限定符。写起代码就比较舒服一点。

#include <iostream>
using namespace std;
int main()
{
	// << 是流插入运算符
	/*std::cout << "hello world" << std::endl;
	std::cout << "hello world" << "\n";*/

	// 自动识别类型
	int i = 11;
	double d = 11.11;
	//std::cout << i <<","<< d << std::endl;

	scanf("%d%lf", &i, &d);
	printf("%d,%lf\n", i, d);

	// >>流提取
	cin >> i >> d;
	cout << i << "," << d << endl;

	return 0;
}

运行截图:
在这里插入图片描述
当直接写using namespace std,是将这个标准流给展开,如果不想展开全部给别人看,也可以指定一部分进行一个展开。按照下面这个写法也是可以的,指定需要用到的部分展开即可。

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
	// << 是流插入运算符
	/*std::cout << "hello world" << std::endl;
	std::cout << "hello world" << "\n";*/

	// 自动识别类型
	int i = 11;
	double d = 11.11;
	//std::cout << i <<","<< d << std::endl;

	scanf("%d%lf", &i, &d);
	printf("%d,%lf\n", i, d);

	// >>流提取
	cin >> i >> d;
	cout << i << "," << d << endl;

	return 0;
}

运行截图:
在这里插入图片描述

总结撒花💞

   本篇文章旨在分享C嘎嘎的基本语法格式:namespace 的理解和具体运用先关知识。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/514816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot + vue 部署 阿里云云服务器 ECS

安装所需文件 安装mysql5.7 下载MySQL的yum源配置 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm安装MySQL的yum源 yum -y install mysql57-community-release-el7-11.noarch.rpm使用yum方式安装MySQL5.7&#xff08;下载需要点时间&#xf…

【 断电延时继电器 电源监视 导轨安装 JOSEF约瑟 HJZS-E202 AC220V】

品牌&#xff1a;JOSEF约瑟型号&#xff1a;HJZS-E202名称&#xff1a;断电延时继电器额定电压&#xff1a;110、220VDC/AC&#xff1b;100VAC触点容量&#xff1a;250V/5A功率消耗&#xff1a;≤4.2W返回系数&#xff1a;10%额定电压 系列型号&#xff1a; HJZS-E202断电延时…

4.4 栈实现及其应用

目录 栈 顺序栈 创建栈: 清空栈: 判断栈是否空 &#xff1a; 进栈 : 出栈 : 取栈顶元素: 栈 栈是限制在一端进行插入操作和删除操作的线性表&#xff08;俗称堆栈&#xff09; 允许进行操作的一端称为“栈顶” 另一固定端称为“栈底” 当栈中没有元素时称为“空栈”…

Robbin负载均衡详解及实践---SpringCloud组件(三)

Robbin负载均衡详解及实践 一 为什么使用Robbin&#xff1f;二 Robbin概念三 负载均衡实践1.启动eureka客户端2.启动多个provider服务&#xff0c;注册到eureka3.在consumer端配置负载均衡参数 四 Robbin源码剖析 一 为什么使用Robbin&#xff1f; 在Eureka详解及实践—Spring…

SAS初识

1、SAS常用工作窗口 “结果”&#xff08;Result&#xff09;窗口——管理SAS程序的输出结果&#xff1b; “日志”&#xff08;Log&#xff09;窗口——记录程序的运行情况&#xff1b; “SAS资源管理器”&#xff08;Explore&#xff09;窗口&#xff1b; “输出”&#xff0…

详解vue中的Object.defineProperty

如果想要age遍历的话 就设置属性 打印出来 发现有可以枚举的属性age 参考课程&#xff1a; 011_尚硅谷Vue技术_Object.defineProperty_哔哩哔哩_bilibili // 1.Vue中的数据代理&#xff1a; // 通过Vm对象来代理data对象中属性的操作&#xff08;读/写&#xff09; // 2…

STL容器 —— list 了解、接口使用,以及模拟实现list(部分常用接口)

注意 &#xff1a; 以下所有文档都来源此网站 &#xff1a; http://cplusplus.com/ 一、vector的介绍及使用 list文档的介绍&#xff1a;https://cplusplus.com/reference/list/list/ 1. vector 的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&…

python自动化测试工具selenium使用指南 ,绝对能帮到你

目录 概述 pythonselenium环境安装 使用selenium启动浏览器 selenium页面加载等待和检测 使用time.sleep()等待 使用implicitly_wait设置最长等待时间 使用WebDriverWait设置等待条件 检测document是否加载完成 selenium元素定位和读取 查找元素 dom元素交互 查找元…

地址族和数据序列

IP地址 为使计算机连接到网络并收发数据,必需向其分配IP地址。 IP地址分为两类。 IPv4 (Internet Protocol version 4)4字节地址族 IPv6 (Internet Protocol version 6)16字节地址族 IPv4与IPv6的差别主要是表示IP地址所用的字节数,目前通用的地址族为IPv4。 IPv6是为了应对20…

全面接入!ChatGPT杀进15个商业应用,让AI替你打工

ChatGPT API开放60多天&#xff0c;世界已经不是两个月前的样子了。 微软联合创始人比尔盖茨称GPT是“40多年来最革命性的技术进步”&#xff0c;英伟达创始人黄仁勋高呼&#xff1a;“我们正处于AI的iPhone时刻”&#xff0c;阿里董事会主席兼CEO张勇也说&#xff1a;“所有行…

经验总结:(Git 版本控制工具快速入门)

Git学习笔记 版本控制(版本迭代) 什么是版本控制 版本迭代&#xff0c;开发过程中&#xff0c;对项目各个阶段的版本的控制。 在开发过程中用于管理我们对文件、目录或工程等内容的修改历史&#xff0c;方便查看更改历史记录&#xff0c;备份以便恢复以前的版本。 多人开发…

ADV7391BCPZ-ASEMI代理亚德诺ADV7391BCPZ原厂芯片

编辑-Z ADV7391BCPZ参数描述&#xff1a; 型号&#xff1a;ADV7391BCPZ VDD&#xff1a;1.8V VAA&#xff1a;3.3V 全驱动输出电流&#xff1a;34.6 mA 低驱动输出电流&#xff1a;4.3 mA 输出电容&#xff1a;10 pF 模拟输出延迟&#xff1a;6 ns DAC模拟输出倾斜&am…

x509证书-crl证书吊销

标准 CRL fields -- 版本、时间、证书序列号和扩展名 -- 都是在4.1节的ASN.1中定义的 -- AlgorithmIdentifier 在第 4.1.1.2 节中定义 以下各项描述了 X.509 v2 CRL 在 Internet PKI 中的使用。 关于签名值和验证 signatureValue 字段包含根据 ASN.1 DER 编码的 tbsCertList 计…

13-Vue技术栈之路由的使用

目录 1、路由相关理解1.1 vue-router 的理解1.2 对 SPA 应用的理解1.3 路由的理解1.4 路由分类 2、路由的基本使用2.1 实现效果&#xff1a;2.2 实现思路&#xff1a;2.3 实现步骤&#xff1a;2.4 具体代码2.5 几个注意点 3、多级路由&#xff08;嵌套路由&#xff09;4、路由的…

中科院学术专用版GPT Academic项目实现

【写在最前】要完成GPT 学术优化 (GPT Academic)这个项目需要一些值得注意的地方&#xff1a; chatGPT账户有余额且未过期&#xff01;&#xff01;&#xff01;有代理工具&#xff08;类似Clash&#xff09; 1、代码克隆 https://github.com/binary-husky/gpt_academic 根据…

Java后端调取微信小程序接口,创建微信小程序直播间

前提条件&#xff1a; 1.注册微信小程序 2.获取appId和secret秘钥 3.小程序具备直播权限 小程序直播开发文档网址 目录 1.创建和修改直播间 2.删除直播间 3.获取直播间分享二维码 1.创建和修改直播间 两个功能一起写&#xff0c;区别在于&#xff0c;修改的时候需要多一…

【数字化转型-05】数字化转型中战略驱动的利器——平衡计分卡

今年的4月19日&#xff0c; 华为第20届全球分析师大会上&#xff0c;华为孟晚舟在大会上发表了“初心如磐&#xff0c;奋楫笃行&#xff0c;共赢数字化未来”的主题演讲&#xff0c;其中分享了对数字化转型的三个核心洞见&#xff0c;首先&#xff0c;战略驱动是根本&#xff0…

Mojo:比 Python 快 35000 倍的 AI 编程语言

Mojo&#xff1a;比 Python 快 35000 倍的 AI 编程语言 Mojo是一门刚刚发布的面向 AI 开发人员的编程语言。 Mojo 被设计为 Python 的超集&#xff0c;所以如果你已经掌握了 Python&#xff0c;学习 Mojo 会很容易。关键是 Mojo 将 Python 的易用性与 C 语言的性能相结合&am…

AIGC—— 内容生产力革命的起点

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.AIGC 1.什么是AIGC? 2.AIGC有哪些优势与挑战 &#xff08;1&#xff0…

51单片机(十)DS1302实时时钟

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…