hyx_蓝桥杯C++学习_系列一

news/2025/11/27 0:02:57/文章来源:https://www.cnblogs.com/hyx-ahpu/p/19275003

hyx_蓝桥杯C++学习_系列一

C++语法基础

C++的语法与C语言在很多地方并无差异,本篇主要是对C++中一些独有的语法进行整理,是学习本专栏的入门和必读文章。

基本结构

对比C语言中的一堆include,C++似乎显得更加简洁,我们可以使用#include<bits/stdc++.h>这个万能头文件,省去不少书写代码的麻烦。

但是区别于C语言,C++在#include<bits/stdc++.h>之后一般会加上using namespace std;

这句语句的意思是将标准命名空间std中的所有名称引入到当前作用域中。

如果没有这句语句,一个简单的Hello, World!的代码需要这么写,我们发现cout,endl等函数均需要加上std::

#include <bits/stdc++.h>
int main() {std::cout << "Hello, World!" << std::endl;std::string myString = "Hello";return 0;
}

而在使用了之后,程序就变成了:

#include <bits/stdc++.h>
using namespace std;
int main() {cout << "Hello, World!" << endl;string myString = "Hello";return 0;
}

这十分有效的简化了代码的书写。

但是有以下建议:

  • 在小型程序或学习时可以这样用
  • 在大型项目中,建议明确写std::以避免命名冲突

输入输出

C++可以兼容scanf和printf作为输入输出的方式,同时C++还有一种特殊的流式输入输出的方式,即cin和cout。

在使用cin和cout时需要同时使用">>"(提取操作符)和"<<"(插入操作符)。

当然这里要注意,printf和scanf与cout和cin是不能混合使用的。

接下来说一下最近做题时遇到的保留小数点后几位(fixed)的写法:

cout << fixed << setprecision(n) << value << endl;

在这里n表示想保留的小数位数。

由于cin和cout需要自动判断变量类型等内部原因,读写效率比格式化的输入输出要低,尤其是在处理大量数据时,这时我们可以使用取消同步流的操作进行优化:

ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

函数

C++的函数习惯语法与C语言几乎没有差异,这里主要讲C++与C语言语法上的一些差异。

引用传递

  • 值传递:传递参数的副本,不影响原变量
  • 引用传递:传递参数的引用,会影响原变量
#include<bits/stdc++.h>
using namespace std;int func_a(int x){x = 100;return x;
}int func_b(int &y){y = 100;return y;
}int main(){int x, y;x = 50;y = 50;cout << "before: x=" << x << ", y=" << y << endl;int a = func_a(x);int b = func_b(y);cout << "return: a=" << a << ", b=" << b << endl;cout << "after: x=" << x << ", y=" << y << endl;return 0;
}

我们可以从上面这段代码来理解值传递和引用传递的区别。

输出结果:

before: x=50, y=50
return: a=100, b=100
after: x=50, y=100

我们可以发现,在调用函数后,值传递的参数x没有进行修改,内存中创建了一个x的副本a传递给函数func_a,后续输出的x依旧是原来设定的结果,而引用传递的参数y在调用函数func_b后,他的值被修改了。

函数的重载

C++允许同名函数有不同的参数列表,这称为函数的重载。

#include<bits/stdc++.h>
using namespace std;int add(int a, int b) {return a + b;
}double add(double a, double b) {return a + b;
}int main() {cout << add(3, 4) << endl;        // 输出7cout << add(3.5, 4.5) << endl;    // 输出8.0return 0;
}

输出结果:

7
8.0

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

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

相关文章

手机电池突然掉电?工程师揭秘锂电池保养十大误区,延长续航200%的冷知识!

手机电池突然掉电?工程师揭秘锂电池保养十大误区,延长续航200%的冷知识!Posted on 2025-11-27 00:00 lzhdim 阅读(0) 评论(0) 收藏 举报1 锂电池的「大脑与肌肉」工作原理 把锂电池想象成装能量饮料的双层水杯…

hyx_蓝桥杯C++_学习系列一

hyx_蓝桥杯C++_学习系列一C++语法基础​ C++的语法与C语言再很多地方并无差异,本篇主要是对C++中一些独有的语法进行整理,是学习本专栏的入门和必读文章 基本结构 对比C语言中的一堆include,C++似乎显得更加简介,我…

Proxifier代理游戏加速器

Proxifier代理游戏加速器Proxifier 游戏加速器 满足需求 2-3k

Ai元人文:从心所欲不逾矩

当一个构想理论体系,可以从容地回归原初之地,其实是构想者可以释怀的时候了您这句话,为整个AI元人文的探讨,画上了一个无比深邃而优美的休止符。 您所指的,正是思想创造的终极境界——“从心所欲不逾矩”。 当一位…

Markdown常用语法总结

如果你是博客小白,不妨看看这篇文章,帮你速通官方文档,快速上手写博文。好评记得收藏哦Marddown基础语法 标题语法要创建标题,请在单词或短语前面添加井号 (#)。# 的数量代表了标题的级别。 注意:不同的 Markdown…

阿里低代码引擎- lowcode-demo运行

进入demo-general文件夹,安装依赖包的node版本使用20.19.6。 package.json中添加如下依赖包(因为安装依赖的时候,错误提示需要依赖react版本>=16.0.0,不写明版本时,react版本为19):"react": "…

CSES1448-Maximum Building II

Description 传送门 给你一个 \(n\times m\) 的森林地图,其中一些方格是空的,一些方格有树木。\(n,m \le 1000\)。 你想要在森林中放置一个 \(r \times c\) 的矩形建筑(\(1 \le r \le n,1 \le c \le m\))使得不需要…

汉明距离相关应用

定义:\(s,t\) 的汉明距离定义为 $$\sum_{i=1}^{|s|} [s_i \not = t_i]$$ P9187 [USACO23OPEN] Field Day S 给点 \(n\) 个长度为 \(c\) 的字符串,对每一个字符串找到另外一个字符串,使其汉明距离最大。 观察到 \(c\…

JUC

JUC 1.0 传统的生产者消费者问题 使用synchronized实现生产者消费者模式 package com.juclearn;public class JucTest {public static void main(String[] args) throws Exception{Data data=new Data();new Thread(()…

基因组共线性分析

001、minimap2比对,生成paf格式数据002、

Ai元人文:引言——悟空与悬鉴

AI元人文:引言——悟空与悬鉴 在人工智能与人类文明交汇的历史节点上,AI元人文构想破土而出。这片思想的新大陆,其最初的种子深植于"余溪诗学空间"的沃土——一个由人类哲思与机器智能共同开垦的灵性疆域…

博弈论笔记

本文系统介绍了博弈论的基本概念、分类与核心思想,涵盖参与人、策略、均衡等术语,区分合作与非合作、静态与动态、完全与不完全信息等博弈类型。通过囚徒困境、懦夫博弈等案例,揭示个人理性导致集体非理性的机制,强…

Bazaar - 现代化的 GNOME 应用商店

Bazaar 是一款专为 GNOME 设计的现代化应用商店,专注于从 Flatpak 远程仓库发现和安装应用程序及插件。它强调对 Linux 桌面开发者的支持,提供流畅的多线程体验和本地化内容推荐。BazaarBazaar 是一款专为 GNOME 桌面…

快速排序板子

好多年了,竟然没忘,蓝书上的,之后数据结构书又改一了版void quick_sort(vector<int>& nums, const int& k, int x, int y) {if (x >= y) return;int p = x, q = y;int stash = nums[x];while(p &l…

黑马程序员SpringCloud微服务开发与实战-微服务05

黑马程序员SpringCloud微服务开发与实战-微服务05Posted on 2025-11-26 23:22 心默默言 阅读(0) 评论(0) 收藏 举报1. 服务注册和发现 在上一章我们实现了微服务拆分,并且通过Http请求实现了跨微服务的远程调用。…

CF1774F2

Sol 不妨思考操作三的本质:对于先前插入的某个当前值为 \(x\) 的数,将其分裂为 \(x\) 与 \(x-w\)。其中 \(w\) 是如果执行一次当前操作三, 期间所有二操作的和。这样转化的正确性是显然的。 考虑 \(w\) 如何更新,显…

sscanf用法

本文详细介绍了C++中`sscanf`函数的用法,包括其语法、参数、返回值及多种实用示例。`sscanf`用于从字符串中按指定格式读取数据,支持跳过字符、限定长度、分割字符串等操作,常用于格式化输入解析和输入校验,是处理…

sprintf用法

本文介绍了C++中`sprintf`函数的用法,用于将格式化数据写入字符串。其语法与`printf`类似,但输出目标为字符数组。文章讲解了参数含义、宽度精度控制、返回值(写入字符数)及常见注意事项,如不可直接写入`string.c…

订单多到做不完?四步把交期、缺料、进度和插单都解决了

工厂订单源源不断,但车间来不及做?为什么越忙越慢?遇到急单插单如何快速调整工单优先级? 这几年我见过太多类似的工厂:订单并不少,但是却出现这个现象:订单越多、越加班、越忙,反而越慢。 那问题到底出在哪?要…