C++语法基础
C++语法基础
C++的语法与C语言再很多地方并无差异,本篇主要是对C++中一些独有的语法进行整理
一、 基本结构
对比C语言中的一堆include,C++似乎显得更加简介,我们可以使用#include这个万能头文件,省去不少书写代码的麻烦。
但是区别于C语言,C++在#include之后一般会加上using namespace std;
这句语句的意思是将标准命名空间 std 中的所有名称引入到当前作用域中。
如果没有这句语句,一个简单的Hello, World!的代码需要这么写,我们发现cout,endl等函数均需要加上std::
#include
int main() {
std::cout << "Hello, World!" << std::endl; //
std::string myString = "Hello";
return 0;
}
而在使用了之后,程序就变成了
#include
using namespace std
int main() {
cout << "Hello, World!" <>”(提取操作符)和“<<”(插入操作符)
当然这里要注意,printf和scanf与cout和cin是不能混合使用的
接下来说一下最近做题时遇到的保留小数点后几位(fixed)的写法
cout << fixed << setprecision(n) << value << endl;
由于cin和cout需要自动判断变量类型等内部原因,读写效率比格式化的输入输出要低,尤其是在处理大量数据时,这时我们可以使用取消同步流的操作进行优化
ios :: sync_with_stdio(0), cin.tie(0), cout.tie(0);
三、 函数
C++的函数习惯语法与C语言几乎没有差异,这里主要讲C++与C语言语法上的一些差异
首先就是引用传递
值传递:传递参数的副本,不影响原变量
引用传递:传递参数的引用,会影响原变量
#include
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++允许同名函数有不同的参数列表,这称为函数的重载
eg:
#include
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
浙公网安备 33010602011771号