c++相比較c特有的-創(chuàng)新互聯(lián)

文章目錄
  • 前言
  • 一、輸入輸出
    • 1.語(yǔ)法
    • 2.格式化
  • 二、函數(shù)
    • 1.函數(shù)的默認(rèn)參數(shù)(缺省參數(shù))
    • 2.函數(shù)重載
    • 3.函數(shù)模板
  • 三、寄存器變量
  • 四、內(nèi)部函數(shù)和外部函數(shù)
    • 1.內(nèi)部函數(shù)
    • 2.外部函數(shù)
  • 五、數(shù)組
    • 1.數(shù)組的長(zhǎng)度
    • 2.多維數(shù)組
    • 3.數(shù)組的引用
    • 4.函數(shù)中數(shù)組參數(shù)傳遞
  • 六、字符串
    • 1.以字符數(shù)組儲(chǔ)存
    • 2.輸入輸出
    • 3.string.h
    • 4.string 對(duì)象

成都創(chuàng)新互聯(lián)公司總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號(hào)搭建、微信平臺(tái)小程序開(kāi)發(fā)、軟件開(kāi)發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷(xiāo)領(lǐng)域創(chuàng)造價(jià)值而不懈努力!
前言

??C++是由C語(yǔ)言演變出來(lái)的,那么C++有什么特別的呢?
這篇文章主要寫(xiě)C++相比較C語(yǔ)言的特別之處。


一、輸入輸出 1.語(yǔ)法
cin>>m>>n;
cout<
2.格式化

基本簡(jiǎn)單實(shí)驗(yàn)代碼

#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);  //按浮點(diǎn)數(shù)形式輸出 
    cout<

查看詳細(xì)簡(jiǎn)潔全面格式化請(qǐng)移步
link(C++ 數(shù)據(jù)格式化)

二、函數(shù) 1.函數(shù)的默認(rèn)參數(shù)(缺省參數(shù))

(1)在聲明或者定義函數(shù)的時(shí),為形參指定默認(rèn)值,叫做默認(rèn)參數(shù);
(2) 分類(lèi):半缺省參數(shù)(形參不全部指定默認(rèn)值)、全缺省參數(shù)(形參全部指定默認(rèn)值)
(3)在半缺省參數(shù)情況下,默認(rèn)參數(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ù)定義中同時(shí)出現(xiàn),必須二選一;
(5)默認(rèn)參數(shù)必須是常量、全局變量、函數(shù)調(diào)用,不能是局部變量;

2.函數(shù)重載

(1)定義:在同一個(gè)域中用同一個(gè)函數(shù)名來(lái)定義不同的函數(shù),要求函數(shù)參數(shù)的類(lèi)型、數(shù)量、返回值類(lèi)型不同;
(2)優(yōu)點(diǎn):在編程中會(huì)遇到幾個(gè)函數(shù)的功能差不多,但是參數(shù)不同,例如add,將不同類(lèi)型的參數(shù)進(jìn)行add,如果是C語(yǔ)言可能要對(duì)函數(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.定義:獨(dú)立于類(lèi)型的函數(shù),可做為一種模式,產(chǎn)生函數(shù)的特定類(lèi)型版本;根據(jù)數(shù)據(jù)類(lèi)型,自動(dòng)實(shí)例化。
2.實(shí)質(zhì):同一個(gè)函數(shù)體,可以給不同類(lèi)型數(shù)據(jù)使用;相當(dāng)于函數(shù)重載的數(shù)量相同,類(lèi)型不同的進(jìn)步。
3.函數(shù)模板定義語(yǔ)法形式是:

template<模板形參表>返回類(lèi)型 函數(shù)名 (形參列表)
{
??函數(shù)體
}

上代碼

#includeusing namespace std;

templateT abs(T a)  //用T表示數(shù)據(jù)類(lèi)型,也可用其他表示
{return a>0?a:-a;
}

int main()
{int a=-3;
   double b=2.3;
   cout<

4.模板形參表
(1)定義:用尖括號(hào)< >括起來(lái),來(lái)表示一個(gè)或者多個(gè)模板形參的列表;
(2)表示< >之間不允許為空,多個(gè)形參之間用 ,逗號(hào)隔開(kāi);
(3)兩種形式:

template< typename 類(lèi)型參數(shù)名1 ,typename 類(lèi)型參數(shù)名2>
template< class 類(lèi)型參數(shù)名1,class 類(lèi)型參數(shù)名 2 >

一般用第一種typename,第二種class與面向?qū)ο?類(lèi)重復(fù),容易混淆

三、寄存器變量

可以儲(chǔ)存在CPU寄存器中的局部變量

register 數(shù)據(jù)類(lèi)型 變量名稱(chēng)
register int a

特點(diǎn)是運(yùn)行速度快,但是寄存器的空間是有限的,考量一下要不要用,別等需要的時(shí)候,沒(méi)有空間了

四、內(nèi)部函數(shù)和外部函數(shù) 1.內(nèi)部函數(shù)

static 返回值類(lèi)型 函數(shù)名 (形參)
{
??函數(shù)體
}

適用于多個(gè)文件的程序,內(nèi)部函數(shù)的意義是只能本文件使用,在連接檢查的時(shí)候不會(huì)出現(xiàn)函數(shù)名不唯一的情況,多個(gè)人編寫(xiě)同一個(gè)程序時(shí)常用的策略。

2.外部函數(shù)

extern 返回值類(lèi)型 函數(shù)名(形參)
{
??函數(shù)體
}

在程序中基本都是外部函數(shù),extern可以省略

五、數(shù)組 1.數(shù)組的長(zhǎng)度

數(shù)組的長(zhǎng)度是一個(gè)常量,不能用變量,長(zhǎng)度不能改變

2.多維數(shù)組

多維數(shù)組初始化的時(shí)候,第一個(gè)長(zhǎng)度可以省略,但是后面的不能省略,因?yàn)榫幾g器可以根據(jù)數(shù)組的元素個(gè)數(shù)自動(dòng)判斷出來(lái)第一個(gè)長(zhǎng)度

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} //錯(cuò)誤
int a[2][2][3]={1,2,3,4,5,6,7,8,9,10,11,12} //正確

3.數(shù)組的引用

不能對(duì)整個(gè)數(shù)組進(jìn)行引用,賦值
可以對(duì)單個(gè)數(shù)組元素變量進(jìn)行引用、賦值

4.函數(shù)中數(shù)組參數(shù)傳遞

(1)數(shù)組為函數(shù)形參的時(shí)候

double max(double a[10] ) //即數(shù)組類(lèi)型、數(shù)組名字、數(shù)組長(zhǎng)度,長(zhǎng)度可以省略

一維數(shù)組的時(shí)候,形參數(shù)組長(zhǎng)度可以寫(xiě),可以不寫(xiě),可以與實(shí)參的數(shù)組長(zhǎng)度相同或者不同;
多維數(shù)組的時(shí)候,第一維任意,但是其他維要與實(shí)參相同;
(2)實(shí)參傳遞數(shù)組名,數(shù)組的首地址傳遞到函數(shù)
(3)數(shù)組的形參實(shí)際上接收不到數(shù)組的長(zhǎng)度,所以可以再設(shè)置一個(gè)形參來(lái)傳遞數(shù)組的長(zhǎng)度

#includeusing namespace std;

int fcout(int a[],int n)  //數(shù)組的長(zhǎng)度n
{int i=0;
	for(;icout<int a[5]={1,2,3,4,5};
	fcout(a,5);
	return 0;
}
六、字符串 1.以字符數(shù)組儲(chǔ)存

(1)定義形式

char a[4]={‘a(chǎn)’,‘b’,‘c’,‘d’}

(2) 以’\0’結(jié)尾,\0是字符串結(jié)束的標(biāo)志,遇到這個(gè)字符結(jié)束,
字符串實(shí)際存放在字符數(shù)組中,字符數(shù)組長(zhǎng)度+1,來(lái)存儲(chǔ)這個(gè)\0;
(3)字符串常量用“ ”表示,編譯器自動(dòng)再字符串最后加上\0空字符

2.輸入輸出

(1)標(biāo)準(zhǔn)輸入輸出流

char str[80];
cin>>str;
cout<

(2)字符串輸入輸出函數(shù)

  • 輸入函數(shù)gets
    gets函數(shù)

char *gets (char *s);

gets函數(shù)原型即輸入字符串到s中去,s是字符數(shù)組或是指向字符數(shù)組的指針,長(zhǎng)度足夠大,可以容納很大的字符串

char str[80];
gets(str);  //輸入字符串
  • 輸出函數(shù)puts
    puts函數(shù)

char *puts(char *s);

puts函數(shù)輸出s字符串,遇到空字符結(jié)束,最后輸出一個(gè)‘\n’換行字符;
不輸出字符串的最后的空字符.

char str[80]="指針不指南嗎";
gets(str);  //輸出字符串
3.string.h
  • 字符串復(fù)制函數(shù)strcpy

char str1[10] , str 2=“computer”;
strcpy(str1,str 2) ; //復(fù)制str2到str1,包括最后的\0

  • 字符串復(fù)制函數(shù)strncpy

char str1[10] , str 2=“computer”;
strncpy(str1,str 2,4) ; //復(fù)制str2前4個(gè)字符到str1,補(bǔ)\0

  • 字符串連接字符 strcat

char str1=“ABC” , str 2=“123”;
strcpy(str1,str 2) ; //把str2連接到str1后面,包括\0,str 2沒(méi)有變化

  • 字符串連接字符 strncat

char str1=“ABC” , str 2=“123456”;
strcpy(str1,str 2,4) ; //把str2前4個(gè)字符連接到str1后面

  • 字符串比較函數(shù)strcmp
    從第一個(gè)字符開(kāi)始依次比較字符的ASCII值

if(strcmp(str1,str2)==0)… //比較字符串相等
if(strcmp(str1,str2)>0)… //比較str1大于str2

  • 計(jì)算字符串長(zhǎng)度函數(shù)strlen
    計(jì)算的是數(shù)組中實(shí)際字符串的長(zhǎng)度,而不是數(shù)組元素的個(gè)數(shù)

n=strlen(“computer”) //n=8,不包含\0
char string[20]=“l(fā)ove computer”;
n=strlen(string); //n=13

  • 字符串轉(zhuǎn)換成數(shù)值的函數(shù)

f=atof(“123.45”); //f=123.45,把字符串轉(zhuǎn)化成一個(gè)float數(shù)據(jù)
i=atoi(“-456”); //i=-456,把字符串轉(zhuǎn)化成一個(gè)int數(shù)據(jù)

4.string 對(duì)象

(0)需要包含頭文件

#include //不能寫(xiě)成string .h

(1)字符串對(duì)象的定義和初始化
和變量相似,如果string沒(méi)有初始化則一律為空字符串,注意string不需要NULL結(jié)尾

char str[20]; //C風(fēng)格定義
string str1; //定義string對(duì)象
string sx,sy,sz; //定義多個(gè)string對(duì)象
char str[20]=“computer”; //C風(fēng)格初始化
string str1=“computer”; //string對(duì)象復(fù)制初始化
string str1(“computer”); //string對(duì)象直接初始化

(2)string對(duì)象的引用
與變量相似,直接引用string對(duì)象名即可

str1=“computer” ; //直接使用string

(3)string對(duì)象的輸入輸出

cin>>str1; //輸入字符串到string對(duì)象中存放
cout<gets(str1); //c風(fēng)格字符串輸入輸出
puts(str1);

(4)字符串的運(yùn)算

  • 加法賦值:+ =

string st1=“AB”,str2=“12”;
str=str1+str2;//str=“AB12”;
str1+=str2; //str=“AB12”;
str1=str1+“aph”; //str1=“ABaph”;

  • 關(guān)系運(yùn)算

str1=“AB”,str2=“12”;
str1>str2;結(jié)果為假;
str1== str2;//jia;
str1=="ABC“

(5)其他對(duì)它的成員函數(shù)進(jìn)行操作
程序中順序都是從0開(kāi)始的
形式如下

str1="ABCDEF";
n=str1.size();//n=7;
n=str1.length();//n=7;
b=str1.empty();//b為假,判斷字符串是不是空字符串bool
//得到子字符串
str2=str1.substr(2,4);//從第2個(gè)字符開(kāi)始的4個(gè)字符;str2="CDE";
//查找字符串
n=str1.find("DEF",pos);  //從pos開(kāi)始查找字符串"DEF"在字符串str1中的位置,返回開(kāi)始的位置,n=3;
//刪除字符
str1.erase(1,2);   //從第1個(gè)字符開(kāi)始的后2個(gè)字符刪掉,str1="ABEF";
//增加字符
str1.append("123456",1,3);//
//字符串的替換和插入
str1.replace(p0,n0,S1,n);  //刪除str1從p0開(kāi)始的n0個(gè)字符,在p0處插入字符串S1的前n個(gè)字符;
str1.replace(p0,n0,str2,pos,n);  //刪除str1從p0開(kāi)始的n0個(gè)字符,在p0處插入字符串str2從pos開(kāi)始的前n個(gè)字符;













你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站名稱(chēng):c++相比較c特有的-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)網(wǎng)址:http://www.muchs.cn/article2/ipeic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站做網(wǎng)站、電子商務(wù)、網(wǎng)站排名、網(wǎng)站內(nèi)鏈、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)