C 學習筆記1 明顯與C的不同之處

2021-10-20 22:35:13 字數 3119 閱讀 7382

2021.03.03

看書學習記錄一些區別於c的部分

當遇到函式的功能相似,但函式和引數的型別可能不同的情況下,為了避免重複的命名。在c++中允許用同乙個函式名定義多個函式,這些函式的引數個數和引數型別不同,這就叫做函式過載。

例如:分別求三個整型、雙精度和長整型數的最大值;可以如下定義:

執行結果如上圖所示,過載的函式體並不要求相同;

引數的個數和型別可以都不同。但不能只有函式的型別不同而引數的個數和型別相同,如下就是錯誤的使用:

intf(

int)

;doublef(

int)

;voidf(

int)

;

對於上面的問題,當函式體相同,只有引數的型別不同,這時候可以使用xc++提供的函式模板,用乙個虛擬的型別來代替。

例子如下:

使用方法為:

template 或template

當然,引數的型別個數還可以是多個,如

template

#include

using

namespace std;

template

<

typename t>

t max

(t a,t b,t c)

intmain()

執行的結果和上面函式過載的結果一致。

在呼叫乙個函式的過程中又出現直接或者間接的呼叫該函式本身,稱為函式的遞迴呼叫,c++允許函式的遞迴呼叫。包含遞迴呼叫的函式稱為遞迴函式。

例:用遞迴方法求n!

#include

using

namespace std;

long

fcn(

int n)

;//宣告函式

c++增加了「引用「機制來彌補指標由於太靈活,賦值不規範而引起的複雜錯誤。

引用的作用是為變數起乙個別名。

如int a;

int &b=a; //宣告b是a的引用

以上語句宣告了b是a的引用,即b是a的別名,這樣宣告之後,a或者b的作用相同,代表同乙個變數。&是引用宣告符,並不代表位址。

c++把引用型作為函式形參,彌補了c語言中只有值傳遞方式即「值形參「。

例:對3個變數按由小到大的順序排序。

#include

using

namespace std;

long

fcn(

int n)

;//宣告函式

intmain()

void

sort

(int

&i,int

&j,int

&k)//對i,j,k3個數排序

在軟體開發過程中,常常需要動態地分配和撤銷記憶體空間,例如對動態鍊錶中結點的插入和刪除。

在c中利用庫函式malloc和free來分配和撤銷記憶體空間

c++中提供了較簡單而功能較強的運算子new和delete來取代malloc和free。

new運算子使用的一般格式為:

new 型別 [初值]

new int(100); //開闢了存放整數的空間,並指定該整數的初值為100,返回乙個指向該儲存空間的位址

new char[10]; //開闢乙個存放字元陣列(10個元素)的空間,返回首元素的位址

new int [5][4]; //開闢乙個存放二維陣列(大小為5*4)的空間,返回首元素的位址(陣列空間不能指定初值在用new分配空間時)

float *p=new float(3.112); //開闢乙個存放單精度數的空間,並指定該實數的初值為

將返回的該空間的位址賦值給指標變數p

delete運算子使用的一般格式為:

delete 指標變數

撤銷上面的指標例子為:delete p;

delete [ ] pt; // 在指標變數前面加一對方括號,表示是對陣列空間的操作。

例子:開闢空間以存放乙個結構體變數

#include

#include

using

namespace std;

struct student //宣告結構體型別student

上面的程式並沒有定義結構體變數,而是定義了乙個基型別為student的指標變數p,用new開闢一段空間以存放乙個student型別的變數。

C 與C語言的不同之處

本文介紹了c 與c語言的不同之處。常見區別 庫函式 c stdio.h c iostream 輸入 c scanf c cin 輸出 c printf c cout 動態開闢 c malloc c new 釋放 c free c delete 以上是比較常見之處。下面是我在學習c 中認識到的內容 內...

小河學習日記 C與C 不同之處出

c與c 的不同之處 只講區別,c 有而c沒有的,請聽下回分解 一.記憶體管理 1.c使用的時malloc free,malloc再分配記憶體時是一頁一頁的分配的,當使用malloc時作業系統會直接批發32頁記憶體,所以使用malloc時,如果沒有後續在堆記憶體上的操作了,是可以越界的。例如如 這樣就...

C語言與C 的不同之處總結

一 c語言認為char屬於int,char型的數值計算實質是ascii碼 二 c語言沒有布林型別,除0位假外,其餘均為真 三 c語言沒有string型別 在c語言中並沒有char型別的常量 但是在c 中卻有,字元常量都是char型別 其實是用int表示char,字元型與整型相比只是更加節省記憶體。有...