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

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

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

??C++是由C語言演變出來的,那么C++有什么特別的呢?
這篇文章主要寫C++相比較C語言的特別之處。


一、輸入輸出 1.語法
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ù)據格式化)

二、函數(shù) 1.函數(shù)的默認參數(shù)(缺省參數(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ù)調用,不能是局部變量;

2.函數(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ù)自動判斷出來第一個長度

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} //正確

3.數(shù)組的引用

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

4.函數(shù)中數(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空字符

2.輸入輸出

(1)標準輸入輸出流

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

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

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

char *gets (char *s);

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

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

char *puts(char *s);

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

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

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

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

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

  • 字符串連接字符 strcat

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

  • 字符串連接字符 strncat

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

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

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

  • 計算字符串長度函數(shù)strlen
    計算的是數(shù)組中實際字符串的長度,而不是數(shù)組元素的個數(shù)

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

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

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

4.string 對象

(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)