??C++是由C語言演變出來的,那么C++有什么特別的呢?
這篇文章主要寫C++相比較C語言的特別之處。
cin>>m>>n;
cout<
2.格式化基本簡單實驗代碼
#include#includeusing namespace std;
int main()
{bool m;
double x,y,z,f;
float f1;
int a,b,c;
cin>>boolalpha>>m; //輸入:true
cout<>oct>>a>>hex>>b>>dec>>c; //輸入:23 D2 -9
cout<>x>>y>>f>>f1; //輸入:3.14 0.1e1 3.1415926 0.1
cout.precision(5); //按浮點數(shù)形式輸出
cout<
查看詳細簡潔全面格式化請移步
link(C++ 數(shù)據格式化)
(1)在聲明或者定義函數(shù)的時,為形參指定默認值,叫做默認參數(shù);
(2) 分類:半缺省參數(shù)(形參不全部指定默認值)、全缺省參數(shù)(形參全部指定默認值)
(3)在半缺省參數(shù)情況下,默認參數(shù)放在參數(shù)列表的最后面;
??上代碼
#includeusing namespace std;
int func(int x=2,int y=3)
{return x+y;
}
int main()
{int a=3,b=9;
int k;
k=func(a); //輸出為3+3=6
//k=func(a,b) 輸出為 3+9=12
//k=func() 輸出為2+3=5
cout<
(4)缺省參數(shù)不能再函數(shù)聲明和函數(shù)定義中同時出現(xiàn),必須二選一;
(5)默認參數(shù)必須是常量、全局變量、函數(shù)調用,不能是局部變量;
(1)定義:在同一個域中用同一個函數(shù)名來定義不同的函數(shù),要求函數(shù)參數(shù)的類型、數(shù)量、返回值類型不同;
(2)優(yōu)點:在編程中會遇到幾個函數(shù)的功能差不多,但是參數(shù)不同,例如add,將不同類型的參數(shù)進行add,如果是C語言可能要對函數(shù)命名add1,add2,add3,令人看的頭大。
??更加注意不要將功能不一樣的函數(shù)聲明成重載函數(shù),以免誤解和混淆。
上代碼
int add(int a,int b);
double add(double a,double b);
double add(int a, int b,double c);
3.函數(shù)模板1.定義:獨立于類型的函數(shù),可做為一種模式,產生函數(shù)的特定類型版本;根據數(shù)據類型,自動實例化。
2.實質:同一個函數(shù)體,可以給不同類型數(shù)據使用;相當于函數(shù)重載的數(shù)量相同,類型不同的進步。
3.函數(shù)模板定義語法形式是:
template<模板形參表>返回類型 函數(shù)名 (形參列表)
{
??函數(shù)體
}
上代碼
#includeusing namespace std;
templateT abs(T a) //用T表示數(shù)據類型,也可用其他表示
{return a>0?a:-a;
}
int main()
{int a=-3;
double b=2.3;
cout<
4.模板形參表
(1)定義:用尖括號< >括起來,來表示一個或者多個模板形參的列表;
(2)表示< >之間不允許為空,多個形參之間用 ,逗號隔開;
(3)兩種形式:
template< typename 類型參數(shù)名1 ,typename 類型參數(shù)名2>
template< class 類型參數(shù)名1,class 類型參數(shù)名 2 >
一般用第一種typename,第二種class與面向對象 類重復,容易混淆
三、寄存器變量可以儲存在CPU寄存器中的局部變量
register 數(shù)據類型 變量名稱
register int a
特點是運行速度快,但是寄存器的空間是有限的,考量一下要不要用,別等需要的時候,沒有空間了
四、內部函數(shù)和外部函數(shù) 1.內部函數(shù)static 返回值類型 函數(shù)名 (形參)
{
??函數(shù)體
}
適用于多個文件的程序,內部函數(shù)的意義是只能本文件使用,在連接檢查的時候不會出現(xiàn)函數(shù)名不唯一的情況,多個人編寫同一個程序時常用的策略。
2.外部函數(shù)extern 返回值類型 函數(shù)名(形參)
{
??函數(shù)體
}
在程序中基本都是外部函數(shù),extern可以省略
五、數(shù)組 1.數(shù)組的長度數(shù)組的長度是一個常量,不能用變量,長度不能改變
2.多維數(shù)組多維數(shù)組初始化的時候,第一個長度可以省略,但是后面的不能省略,因為編譯器可以根據數(shù)組的元素個數(shù)自動判斷出來第一個長度
3.數(shù)組的引用int a[ ][2][3] ={1,2,3,4,5,6,7,8,9,10,11,12} //正確
int a[2][ ][3]={1,2,3,4,5,6,7,8,9,10,11,12} //錯誤
int a[2][2][3]={1,2,3,4,5,6,7,8,9,10,11,12} //正確
不能對整個數(shù)組進行引用,賦值
可以對單個數(shù)組元素變量進行引用、賦值
(1)數(shù)組為函數(shù)形參的時候
double max(double a[10] ) //即數(shù)組類型、數(shù)組名字、數(shù)組長度,長度可以省略
一維數(shù)組的時候,形參數(shù)組長度可以寫,可以不寫,可以與實參的數(shù)組長度相同或者不同;
多維數(shù)組的時候,第一維任意,但是其他維要與實參相同;
(2)實參傳遞數(shù)組名,數(shù)組的首地址傳遞到函數(shù)
(3)數(shù)組的形參實際上接收不到數(shù)組的長度,所以可以再設置一個形參來傳遞數(shù)組的長度
#includeusing namespace std;
int fcout(int a[],int n) //數(shù)組的長度n
{int i=0;
for(;icout<int a[5]={1,2,3,4,5};
fcout(a,5);
return 0;
}
六、字符串
1.以字符數(shù)組儲存(1)定義形式
char a[4]={‘a’,‘b’,‘c’,‘d’}
(2) 以’\0’結尾,\0是字符串結束的標志,遇到這個字符結束,
字符串實際存放在字符數(shù)組中,字符數(shù)組長度+1,來存儲這個\0;
(3)字符串常量用“ ”表示,編譯器自動再字符串最后加上\0空字符
(1)標準輸入輸出流
char str[80];
cin>>str;
cout<
(2)字符串輸入輸出函數(shù)
char *gets (char *s);
gets函數(shù)原型即輸入字符串到s中去,s是字符數(shù)組或是指向字符數(shù)組的指針,長度足夠大,可以容納很大的字符串
char str[80];
gets(str); //輸入字符串
char *puts(char *s);
puts函數(shù)輸出s字符串,遇到空字符結束,最后輸出一個‘\n’換行字符;
不輸出字符串的最后的空字符.
char str[80]="指針不指南嗎";
gets(str); //輸出字符串
3.string.hchar str1[10] , str 2=“computer”;
strcpy(str1,str 2) ; //復制str2到str1,包括最后的\0
char str1[10] , str 2=“computer”;
strncpy(str1,str 2,4) ; //復制str2前4個字符到str1,補\0
char str1=“ABC” , str 2=“123”;
strcpy(str1,str 2) ; //把str2連接到str1后面,包括\0,str 2沒有變化
char str1=“ABC” , str 2=“123456”;
strcpy(str1,str 2,4) ; //把str2前4個字符連接到str1后面
if(strcmp(str1,str2)==0)… //比較字符串相等
if(strcmp(str1,str2)>0)… //比較str1大于str2
n=strlen(“computer”) //n=8,不包含\0
char string[20]=“l(fā)ove computer”;
n=strlen(string); //n=13
4.string 對象f=atof(“123.45”); //f=123.45,把字符串轉化成一個float數(shù)據
i=atoi(“-456”); //i=-456,把字符串轉化成一個int數(shù)據
(0)需要包含頭文件
#include //不能寫成string .h
(1)字符串對象的定義和初始化
和變量相似,如果string沒有初始化則一律為空字符串,注意string不需要NULL結尾
char str[20]; //C風格定義
string str1; //定義string對象
string sx,sy,sz; //定義多個string對象
char str[20]=“computer”; //C風格初始化
string str1=“computer”; //string對象復制初始化
string str1(“computer”); //string對象直接初始化
(2)string對象的引用
與變量相似,直接引用string對象名即可
str1=“computer” ; //直接使用string
(3)string對象的輸入輸出
cin>>str1; //輸入字符串到string對象中存放
cout<gets(str1); //c風格字符串輸入輸出
puts(str1);
(4)字符串的運算
string st1=“AB”,str2=“12”;
str=str1+str2;//str=“AB12”;
str1+=str2; //str=“AB12”;
str1=str1+“aph”; //str1=“ABaph”;
str1=“AB”,str2=“12”;
str1>str2;結果為假;
str1== str2;//jia;
str1=="ABC“
(5)其他對它的成員函數(shù)進行操作
程序中順序都是從0開始的
形式如下
str1="ABCDEF";
n=str1.size();//n=7;
n=str1.length();//n=7;
b=str1.empty();//b為假,判斷字符串是不是空字符串bool
//得到子字符串
str2=str1.substr(2,4);//從第2個字符開始的4個字符;str2="CDE";
//查找字符串
n=str1.find("DEF",pos); //從pos開始查找字符串"DEF"在字符串str1中的位置,返回開始的位置,n=3;
//刪除字符
str1.erase(1,2); //從第1個字符開始的后2個字符刪掉,str1="ABEF";
//增加字符
str1.append("123456",1,3);//
//字符串的替換和插入
str1.replace(p0,n0,S1,n); //刪除str1從p0開始的n0個字符,在p0處插入字符串S1的前n個字符;
str1.replace(p0,n0,str2,pos,n); //刪除str1從p0開始的n0個字符,在p0處插入字符串str2從pos開始的前n個字符;
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
網站名稱:c++相比較c特有的-創(chuàng)新互聯(lián)
網頁網址:http://bm7419.com/article2/ipeic.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網站、做網站、電子商務、網站排名、網站內鏈、微信公眾號
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)