用new在函式體內部開闢空間

2021-10-16 04:06:59 字數 861 閱讀 8586

1.開闢一維陣列可以用外部傳進來的形參

void

getdft

(int

**a,

const

int arows,

const

int acols,

float

**b,

float

**c)

{*b =

newfloat

[arows*acols]

;//總共元素數

*c =

newfloat

[arows*acols]

;//總共元素數

2.開闢二維陣列時只能使用函式體內部的引數

雖然不知道為什麼,先這樣記吧

t(*p)[n] = new t[m][n];

…delete p;

缺點:n必須是已知

優點:呼叫直觀,連續儲存

t** p = new t*[m];

for(int i = 0; i < m; i++)

p[i] = new t[n];

…for(int i = 0; i < m; i++)

delete p[i];

delete p;

缺點:非連續儲存,程式煩瑣,p為t**型別

優點:呼叫直觀,n可以不是已知

t* p = new t[m*n];

…delete p;

缺點:呼叫不夠直觀

優點:連續儲存,n可以不是已知

由於陣列定義在函式體內部,導致棧溢位的情況

最近在做清華的一道範圍查詢的題目,由於要求是到500000,所以我就把部分陣列定義在了main函式外面。include include include 陣列在外面8個0,裡面5個0 using namespace std define maxn 500000 void aaa int a cout ...

JS 建構函式在 new 時做了啥?

1 var obj 建立乙個臨時物件 2 obj.proto people.prototype 將該臨時物件原型指向建構函式原型 3 people.call obj,孫悟空 將建構函式中 this 指向臨時物件,並傳入引數 孫悟空 4 return obj 返回臨時物件,person 指向建立的 o...

在函式內部訪問外部的變數

變數是有作用域的.函式不僅可以定義在模組的最外層,還可以定義在另外乙個函式的內部,像這種定義在函式裡面的函式稱之為巢狀函式 例如 def print msg print msg 是外圍函式 msg zen of python def printer printer是巢狀函式 print msg pr...