hyx-ahpu

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;        // 输出7
    cout << add(3.5, 4.5) << endl;    // 输出8.0
    return 0;
}

输出结果:

7
8.0

posted on 2025-11-27 00:02  后宇翔  阅读(0)  评论(0)    收藏  举报

导航