c++初阶学习----入门(上)

        大家好啊。最近学习了一点关于c++的知识。这不就迫不及待的来与大家分享了嘛。但我这也是现学现卖所以咧。有很多遗落甚至不对的地方希望大家可以在评论区里面指出来。这样也可以增加大家对知识的巩固。

c语言与c++的联系

        不知道大家看到c++会不会不由自主的联想到C语言啊。毕竟都是编程语言而且都带有一个c那么联想到应该很正常吧。反正开始的时候我身边的人是这样的。每当有人说着c++。哦,那个人不是学c语言的嘛。应该会吧。但是我开始对c++一点都不知道啊。但是经过今天的学习。我知道了。c++与c语言确实有很大的联系。

       更加准确的说C++是在C语言的基础上发展而来的,它是完全兼容C语言的。大家还记得我们以前在vs里面创建项目的时候后缀打的是.c。当然写c++的代码vs还是适用的。只是后面我们创建c++项目的时候用的是.cpp了。

      还有就是我们也可以在.cpp里面写c语言的代码。但是不能再.c里面写c++的代码。因为c++是在c语言的基础上延伸发展的。也可以说c++是以c语言为基础而衍生出来的更加先进的编程语言。 好了大家只是需要知道c++是以c语言为基础发展的并且c++包含c语言就可以了。

第一个代码

        不知道大家是否还记得刚开始玩c语言的时候写的第一个代码是什么了。但是我觉得我当时写的第一个代码是关于printf的。然后对于c++的话我们这里也是实现关于printf的。大家可以看一下:

       大家发现了吧。这个代码实现的效果与c语言中的printf是一样的。并且除了前期准备啊。代码量还像也差不多的。但是其中还有一些什么东西不理解啊。比如说什么std啊cout啊还有什么endl啊。大家别急。接下来我们就一一来讲解。

命名空间

       对于c++的第一个正式知识点我们来讲讲命名空间namespace那命名空间的含义是啥咧。这个我们先来看看比较官方的解释是个啥:在C/C++中,变量,函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

       也就是说命名空间就是为了解决我们c语言中的名字重复。避免冲突。那么光讲的话也不能让大家理解,那么我们直接举个例子:

        大家看一下上面的两个区别。一个报错一个成功打印了。大家还记得rand的作用吧。rand是生成一个随机数的。反正这也就表明嘛。这是库函数,在c语言中如果出现这样的话就不能实现效果,但是在c++里面我们只需要命名一下空间那么就变的合理了。这下子大家知道namespace的作用了吧。

        并且大家也看到了namespace的用法就是namespace+名字。然后{}。在括号里面可以写可以定义变量/函数/类型等。就是说出来上面这个以外还可以定义一个变量以外还可以定义结构体,函数这些。

         只要定义好了之后就可以正常使用了。 并且还可以嵌套命名空间就是一个命名空间里面还可以写其他的命名空间。

        大家应该发现了吧。我在使用命名空间的时候再打印的时候是写的yh::rand。这就是使用命名空间的最基本的指定命名空间访问,大家可以理解为yh->rand。这是我们后面使用最常见且为最稳妥的一个用法了。还有一个用法就是using将命名空间中某个成员展开。什么意思咧。以上面这张图片来说就是将命名空间中的其中一些指定的成员,比如说经常使用的,免得每次都要指定。那么具体是什么样子的咧:

       这里我们只放开了yh空间中的a。所以我们在使用的时候,只有a可以不在特定的引用了。其他的还是需要特定引用。 那既然有指定开,或者或是半开,那么有没有全开咧。嘿,可还真有。展开命名空间中全部成员 。含义显而易见吧,就是把整个 命名空间全部展开。这样就不需要大家特定指引了。但是这虽然看起来要号一些。但是项⽬不推荐,冲突⻛险很⼤。因为你本来就是为了防止命名冲突的,你这又全部展开了。岂不是没干了。但我们写代码较少的话也可以用,毕竟少嘛。风险也较小。但后面上班了。写项目了还是尽量或者别用:

      大家也看到这里就了解了命名空间如何创建以及命名空间的三种用法了吧。

输入与输出

       当我们学习了namespace后,我们就来聊聊代码中的第二个新知识点cout。大家可以稍微看一下下面的解释。

<iostream> 是 Input Output Stream 的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输
出对象。相等于输入与输出的头文件。
std::cin 是 istream 类的对象,它主要⾯向窄字符(narrow characters (of type char))的标准输
⼊流。
std::cout 是 ostream 类的对象,它主要⾯向窄字符的标准输出流。相当于我们的控制面板
std::endl 是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符加刷新缓冲区。相当于我们的换行“\n”
<<是流插⼊运算符,>>是流提取运算符。(C语⾔还⽤这两个运算符做位运算左移/右移)
       而且 cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,所以要 通过命名空间的使⽤⽅式去⽤他们。

       我们前面说过c++是c语言的发展。那么接下里我们要讲一个爽点。我们都还记得我们c语言输入与输出变量的话都需要确定我们输入与输出的类型。但是大家看我的那个代码,输出的时候我并没用写类型啊。是不是,这就是c++与c语言相比的一个爽点。

还有就是大家可以在io需求⽐较⾼的地⽅,如部分⼤量输⼊的竞赛题中,加上以下3⾏代码可以提⾼C++IO效率 。ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);反正就是没写对我们现在是无差的。但是写了还是有意的。我们只管写进可以了。

缺省参数

        什么叫缺省参数啊。没怎么听过啊。那么缺省参数就是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参 则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。(有些地⽅把缺省参数也叫默认参数)

       并且在c++中缺省参数分为半缺与全缺。名字显而易见,全缺就是没有指定实参。半缺就是有一部分确定了实参。

       C++规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值。带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值。

       就是说缺省参数定义的话只能从右向左缺。就是右边开始没有。调用的话就是翻过来的。然后声明必须确定缺省值。那么上面是什么意思咧。我们来讲讲。

        我们可以看看我们上面写的这个代码。第一个Func我们就没传参数啊。我在引用的时候写了a与b的值。这就是我们在没有传参的时候使用默认的参数。并且这个还是一个全缺省参数。怎么看的咧。什么看我们在引用的时候是不是直接都赋了值的。也就是说就算我们在调用的时候没有传参,c++还是加油用默认参数给出一个答案。

         接下来就是半缺,我们讲过,我们在写的时候从右向左。调用的时候从左向右。我们如果是半缺的话就不能像全缺那样,一个都不写。比如说:

        我们可以看到半缺的时候我们如果一个没写,系统是会提醒的。这就表明我们半缺你要保证我们使用的式子每一个都有参数。那个缺了就补那个。并且不能跳跃。这也是系统不允许的。我们至少要保证完成这个样子。 

        对于缺省参数我们还有一个知识点就是缺省参数不能声明和定义同时给。什么意思咧。大家看一下下面的这个照片就知道了 。

总结

      好的,上面就是c++的初阶学习的上篇了,然后我们接下来还会有一个下篇。这里我们主要先交代一些让大家消化一下,毕竟刚从c语言转到c++的话,可能还会有一点不理解,所以先给大家一点时间看一下,消化一下。这里只是开胃菜,然后大家还是需要把这些记住,因为后面对于c加加的学习和使用的话会用的比较多。 

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

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

相关文章

手机自带录屏在哪?6个软件教你快速进行手机录屏

手机自带录屏在哪&#xff1f;6个软件教你快速进行手机录屏 手机自带的录屏功能可以让你轻松录制屏幕上的内容&#xff0c;记录游戏过程、制作教程或捕捉其他重要时刻。不同品牌的手机可能在不同位置提供录屏功能。以下是一些常见的手机品牌及其录屏功能位置&#xff0c;以及一…

【康复学习--LeetCode每日一题】724. 寻找数组的中心下标

题目&#xff1a; 给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因为在下标的左侧不…

运动爱好者的新选择:哈氪聆光气传导耳机,轻巧又安全

平时不管是漫步街头、骑行穿梭&#xff0c;还是乘坐公共交通时&#xff0c;我总是喜欢佩戴耳机&#xff0c;借此隔绝外部的喧嚣&#xff0c;享受音乐的乐趣。在户外使用耳机&#xff0c;我更倾向于选择气传导耳机&#xff0c;它们更符合我的需求&#xff0c;因为这种耳机能让我…

优雅下线的艺术:Eureka服务管理深度解析

优雅下线的艺术&#xff1a;Eureka服务管理深度解析 引言 在微服务架构中&#xff0c;服务的动态注册与发现是保证系统高可用性的关键。Eureka作为Netflix开源的服务发现框架&#xff0c;提供了服务注册与发现的基本功能。然而&#xff0c;服务在下线时如何做到"优雅&qu…

每日一编程,早点拿offer

计算字符串最后一个单词的长度&#xff0c;单词以空格隔开 输入描述&#xff1a; 输入一行&#xff0c;代表要计算的字符串&#xff0c;非空 输出描述&#xff1a; 输出一个整数&#xff0c;表示输入字符串最后一个单词的长度。 输入&#xff1a;hello world输出&#xff1a…

kubernetes集群证书过期问题解决

kubernetes集群证书过期问题解决 问题描述检查证书是否过期更新证书master节点操作node节点操作 问题描述 K8S 各个组件需要与 api-server 进行通信&#xff0c;通信使用的证书都存放在 /etc/kubernetes/pki 路径下&#xff0c;kubeadm 生成的证书大部分默认有效期为 1 年&…

SECS/GEM快速完成半导体设备通讯

金南瓜帮助国内大量从事半导体前道设备开发研制、生产的设备厂商&#xff0c;通过快速提供稳定可靠的SECS/GEM、GEM300产品&#xff0c;为客户在激光退火、湿法设备&#xff08;清洗、镀膜等&#xff09;、离子注入、MOCVD、PVD等客户专注于核心工艺提升&#xff0c;提升企业的…

`CyclicBarrier` 是 Java 中的一个同步辅助工具类,它允许一组线程相互等待,直到所有线程都达到了某个公共屏障点(barrier point)

CyclicBarrier 是 Java 中的一个同步辅助工具类&#xff0c;它允许一组线程相互等待&#xff0c;直到所有线程都达到了某个公共屏障点&#xff08;barrier point&#xff09;。当所有线程都到达屏障点时&#xff0c;它们可以继续执行后续操作。CyclicBarrier 的特点是可以重复使…

中介子方程五十

XXFXXaXnXaXXαXLXyXXWXuXeXKXXiXyXΣXXΣXXVXuXhXXWXηXXiXhXXpXXhXiXXηXWXXhXuXVXXΣXXΣXyXiXXKXeXuXWXXyXLXαXXaXnXaXXFXXaXnXaXXαXLXyXXWXuXeXKXXiXyXΣXXΣXXVXuXhXXWXηXXiXhXXpXXhXiXXηXWXXhXuXVXXΣXXΣXyXiXXKXeXuXWXXyXLXαXXaXnXaXXFXXuXXWXXuXXdXXrXXαXXuXpX…

Gen4Gen:多概念个性化图像生成的数据驱动革新

个性化文本到图像生成模型在用户控制生成过程方面取得了重要进展。这些模型能够通过少量训练样本学习并合成包含新颖个性化概念的图像&#xff0c;例如用户的宠物或特定物品。然而&#xff0c;现有技术在处理多概念个性化时存在局限性&#xff0c;尤其是在生成包含多个相似概念…

连接与隔离:Facebook在全球化背景下的影响力

在当今全球化的背景下&#xff0c;Facebook作为全球最大的社交网络平台&#xff0c;不仅连接了世界各地的人们&#xff0c;还在全球社会、经济和文化中发挥着深远的影响。本文将深入探讨Facebook在全球化进程中的作用&#xff0c;以及其对个体和社会之间连接与隔离的双重影响。…

【续集】Java之父的退休之旅:从软件殿堂到多彩人生的探索

Java之父的退休之旅&#xff1a;从软件殿堂到多彩人生的探索-CSDN博客 四、科技领袖退休后的行业影响 4.1 传承与启迪 Gosling等科技领袖的退休&#xff0c;为行业内部年轻一代提供了更多的发展机会和成长空间。他们的退休不仅意味着权力和责任的交接&#xff0c;更是一种精…

等保测评新趋势:应对数字化转型中的安全挑战

随着信息技术的飞速发展&#xff0c;数字化转型已成为企业提升竞争力、优化运营效率的重要手段。然而&#xff0c;这一转型过程中&#xff0c;企业也面临着前所未有的安全挑战。等保测评&#xff08;信息安全等级保护测评&#xff09;作为保障信息系统安全的重要手段&#xff0…

html5路由如何在nginx上部署(vite+vue3)

我们知道前端常用的有Hash 模式和html5模式的路由&#xff0c;hash模式在nginx上部署不需要额外的操作&#xff0c;而html5模式则需要额外设置&#xff0c;这里介绍下如何在nginx根地址&#xff08;location / {}&#xff09;下部署和在非根地址上&#xff08;location /admin{…

【MATLAB源码-第232期】基于matlab的 (204,188) RS编码解码仿真,采用QPSK调制输出误码率曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 Reed-Solomon码&#xff08;RS码&#xff09;是一类广泛应用于数字通信和存储系统中的纠错码&#xff0c;尤其在光盘、卫星通信和QR码等领域有着重要作用。RS码是一种非二进制的纠删码&#xff0c;由Irving S. Reed和Gustave…

当CNN遇上Mamba,高性能与高效率通通拿下!

传统视觉模型在处理大规模或高分辨率图像时存在一定限制&#xff0c;为解决这个问题&#xff0c;研究者们就最近依旧火热的Mamba&#xff0c;提出了Mamba结合CNN的策略。 这种结合可以让Mamba在处理长序列数据时既能够捕捉到序列中的时间依赖关系&#xff0c;又能够利用CNN的局…

思维+并查集,1670C - Where is the Pizza?

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1670C - Where is the Pizza? 二、解题报告 1、思路分析 考虑两个数组a&#xff0c;b的每个位置只能从a&#xff0c;b中挑一个 不妨记posa[x]为x在a中位置&#xff0c;posb同理 我们假如位置i挑选a[i]&a…

【JS+H5+CSS实现烟花特效】

话不多说直接上代码 注意:背景图路径是picture/star.jpg&#xff0c;自己在同级目录先创键picture目录再下载一张图片命名为star.jpg HTML: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vi…

【LLM】三、open-webui+ollama搭建自己的聊天机器人

系列文章目录 往期文章回顾&#xff1a; 【LLM】二、python调用本地的ollama部署的大模型 【LLM】一、利用ollama本地部署大模型 目录 前言 一、open-webui是什么 二、安装 1.docker安装 2.源码安装 三、使用 四、问题汇总 总结 前言 前面的文章&#xff0c;我们已经…

探索Qt的QVariant:灵活的数据交换机制

&#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加我的…