淺入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++學習中十分重要的部分,特別是命名空間的理解,十分重要
也算是完成了第一次的周更,以後還會周更的,喜歡就點個贊吧,喜歡這個專欄的可以點個關注,我們下週見。
下一章—重載

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