C 對C的擴充 動態陣列例子

2021-10-10 02:17:33 字數 2962 閱讀 2172

從堆記憶體中獲取乙個整型陣列,賦值後並列印出來。

#include

using

namespace std;

void

main()

// 分配記憶體空間

for(

int i=

0;i)

p[i]=0

; cout<<

"output the array : "

0;i) cout<<<

" "

; cout

p;// 釋放記憶體空間

}

1.改進該程式,將動態分配陣列及其初始化的操作封裝成函式。

思考以下程式為什麼給p動態陣列分配記憶體空間失敗?

#include

using

namespace std;

void

allocate

(int

*pt,

int len)

;void

main()

void

allocate

(int

*pt,

int len)

// 分配記憶體空間

for(

int i=

0;i)

pt[i]=0

;}

2.使用指標做函式返回值,將被調函式執行時動態開闢的記憶體塊首位址返回給主程式

#include

using

namespace std;

int*

allocate

(int len)

;void

main()

int*

allocate

(int len)

// 分配記憶體空間

for(

int i=

0;i)

pt[i]=0

;return pt;

}

3.使用二級指標做函式形參,使其指向實參指標,通過形參指標間接的操作實參指標,使實參指標指向被調函式執行時動態開闢的記憶體塊

#include

using

namespace std;

void

allocate

(int

**pt,

int len)

;void

main()

void

allocate

(int

**pt,

int len)

// 分配記憶體空間

for(

int i=

0;i*pt)

[i]=0;

}

4.以上方法的缺點是程式顯得不自然,可讀性不好,使用引用做形參,使形參是實參指標的別名,通過形參操作實參指標,程式更自然,可讀性更好

#include

using

namespace std;

void

allocate

(int

*&pt,

int len)

;void

main()

void

allocate

(int

*&pt,

int len)

// 分配記憶體空間

for(

int i=

0;i)

pt[i]=0

;}

5.採用模組化思想,將以上程式的其他功能也封裝成函式,注意函式定義和函式呼叫時引數的設定

#include

using

namespace std;

void

allocate

(int

*&pt,

int len)

;void

output

(int

*&pt,

int len)

;void

main()

void

allocate

(int

*&pt,

int len)

// 分配記憶體空間

for(

int i=

0;i)

pt[i]=0

;}void

output

(int

*&pt,

int len)

6.給以上程式完善得實用些,增加輸入功能

#include

using

namespace std;

void

allocate

(int

*&pt,

int len)

;void

output

(int

*&pt,

int len)

;void

input

(int

*&pt,

int len)

;void

main()

void

allocate

(int

*&pt,

int len)

// 分配記憶體空間

for(

int i=

0;i)

pt[i]=0

;}void

output

(int

*&pt,

int len)

void

input

(int

*&pt,

int len)

cout<}

C 對C的擴充

int a int b a 宣告b是乙個整型變數a的引用變數 型別可以被 過載 霧 includeusing namespace std template 函式模板 t max t a,t b,t c int main 內建函式是在編譯時,將所呼叫函式的 嵌入到 主函式中。inline int ma...

1 3 C 對C的擴充

asm bool true false wchar t namespace using class public protected private friend this inline virtual throw try catch new delete explicit mutable expo...

《C 程式設計教程》 C 對C語言的擴充

c 型別轉換符一共有四種 static cast expression const cast expression dynamic cast expression reinterpret cast expression 1 static cast 最常用的型別轉換操作符,它主要執行非多型的轉換,用於...