浅入C++(2)——C++程序的必要结构


C++程序的必要结构

对于每一个C++程序来说,都有个必要的结构。
话不多说,咱们直接进入正题
先上Hello World!

#include<stdio.h>
int main(){
   
    
	printf("Hello World!\n");
	return 0;
} 

这是C语言的☝☝☝

#include<iostream>
using namespace std;
int main(){
   
    
	//printf("Hello World!\n");
	//printf在C++中依然可以使用
	cout<<"Hello world"<<endl ;
	//cout   C++里新增的输出方式,会在下一章中讲到
	return 0;
} 

这是C++的☝☝☝
其中包含了3个主要部分,分别是

  1. 头文件
  2. 命名空间
  3. 程序主体

头文件

和C语言一样,在C++中我们用的大多数函数都是前人写好放在头文件中的(eg:cout,pritf()),我们不可能每次都重新去书写这些函数,所以C++程序的第一个必要结构就是引用头文件了,把前人写的函数,直接调用。
这里本人将列举一些常用头文件中常用的函数,至于其作用我们后面再谈
注意:下面的函数并不是头文件中所有的函数,只是本人认为常用的


首先,最最最重要的万能头文件
< bits/stdc++.h >
但是有些比赛不允许使用万能头文件,所以其他头文件还是需要了解下的

< iostream >
输入输出流,in out stream

cin           cout
getline()

< cstdio >
C++中的< stdio.h >,但是还是有些不同

getchar()    putchar()
gets()       puts()
scanf()      printf()
freopen()    fclose()

< cmath >
数学函数集合

log()   tan()
sin()   cos()    
pow()   exp()
sqrt()  abs()

< algorithm >
标准算法库

max()          min()
swap()         sort()
fill()         unique() 
count()        find()
lower_bound()  upper_bound()   

< cstring >
C++里的< string.h >
功能几乎和C语言中的< string.h >一样

memset()
memcpy()
strcpy()
memcmp()
strlen()

< string >
STL中的一员,定义了一个新的数据类型用于处理字符串
里面重载了+,-,=,==,!=等运算符,使对于字符串的使用变得非常方便
(重载将在下一章讲解)


size()    empty()
at()      copy()
length()  insert()

还有一些其他STL的头文件就不一一列举了,后面讲STL时会再讲到


命名空间

其实上面的Hello World其实也可以这么写

#include<iostream>
int main(){
   
       
	std::cout<<"Hello world"<<std::endl ;
	//std::printf("Hello world\n");
	return 0;
} 

那对比之前

#include<iostream>
using namespace std;
int main(){
   
       
	cout<<"Hello world"<<endl ;
	//printf("Hello world\n");
	return 0;
} 

命名空间是C++中新引进的概念,命名空间是一种特殊的作用域,你可以在程序中(包括其他命名空间中)调用不同命名空间中的函数,结构体,类,变量,这样就可以使程序更为模块化,且可以很好的防止命名冲突

C++自带一个std命名空间,C++标准函数或者对象都是在std中定义,我们所常用的也是std命名空间中的,所以得标明是std命名空间,因为其他命名空间也可以有printf()这个函数

而using namespace 是什么意思呢
为了便于理解
你可以认为这个语句是把一个命名空间当成默认的命名空间,即该语句下的未标明命名空间的函数或变量全是默认的这个命名空间内的
举个栗子:


#include<iostream>
#include<cstdio>
namespace zzz{
   
       
	struct num_node{
   
       
		int x;
	};
	void printf(int x){
   
       //zzz命名空间中也可以有printf()
		std::printf("%d",x);
		//在zzz命名空间内调用std命名空间内的printf()
	}
}
using namespace zzz;//让默认的命名空间为zzz
num_node x;//默认zzz命名空间后就不需要注明了
           //相加也可以加
int main(){
   
       
	num_node x;
	std::cout<<"Hello world"<<std::endl ;
	zzz::printf(1);
	printf(1);//这个printf()是默认命名空间zzz中的哦
	return 0;
} 

因为我们使用的主要是std命名空间,所以我们一般会将其设为默认的命名空间,即using namespace std;
这样,我们后面使用std命名空间内的函数或对象时,就不用多加个std::了
完美的偷了个懒,嘿嘿

当然你也可以不去理解命名空间的意义,只是把这个当成C++程序的一个模板。那你的C++学习之旅必将会少一分乐趣。

#include<iostream>
using namespace std;
int main(){
   
       
	
	return 0;
} 

程序主体

这个就没什么好讲的了,和C语言一样,只是多了可以用一些新的东西(函数,类…),牢记那些规则,语法,尽情的去创作吧


本章字数可能有点多,在没有超链接的情况下达到2500+,但是确实C++学习中十分重要的部分,特别是命名空间的理解,十分重要
也算是完成了第一次的周更,以后还会周更的,喜欢就点个赞吧,喜欢这个专栏的可以点个关注,我们下周见。
下一章—重载

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章