C 通過輸入數來確定乙個陣列的動態大小

2021-09-27 04:26:24 字數 938 閱讀 2687

這個和編譯器有關

一維:cin>>n;int* a=new int[n];

但是new出來的一定不要忘了delete掉

delete a; // 正確的用法

delete a; // 錯誤的用法後者相當於delete a[0],漏掉了另外n-1個物件。

二維:設有m行n列

cin>>m>>n;

int a = new int [m];

for(int i = 0; i < m; i++) a[i] = new int [n];

ps:就相當於產生了乙個二維陣列a[m][n]了,但是對於我們平時宣告的陣列a[m][n],a[i][j]=a[in+j],因為是連續的一片記憶體,而這樣動態宣告的陣列任意的a[k]都是乙個int型別,即乙個位址了,所以只能a[i][j]或者((a+i)+j)來訪問陣列的元素,而不能a[in+j]這樣轉換著用了釋放記憶體:

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

delete a[i];

delete a;

對於c++,我們完全可以充分利用它自己強大而方便的容器,比如vector,之所以動態宣告陣列,相比是大小不確定,宣告太大了怕浪費空間,而vector就不用指定大小,當存的資料變多,自動擴大容量,比如假設vector預設大小是8,當你再往裡存第9個元素時,容器自動擴容,變為16,16再不夠用,擴為32,2倍2倍的增長,這樣就根據需要擴容,不會浪費空間,也可以像普通陣列那樣直接指定vector的大小,總之普通陣列可以的它都可以,普通陣列沒有的它更有;

一維:vector a;

a.push_back(k);

k為待存入陣列的數,用法一樣,可以a[i]這樣直接取數,還有各種自帶的方法,使用方便極了

vector a;

vector a(5); //指定陣列大小是5

vector a(5,3); //陣列大小為5,並初始化陣列所有元素值為3

c 返回乙個陣列

bqg s complexity analysis 最近遇到乙個很不一般的事情,返回乙個陣列時,我們可以直接返回它的首位址,但是如果呼叫兩次以上,返回的數值就是有問題的了。呼叫兩次js 函式,分別用a b陣列存放返回的陣列值,但是接收到返回的數值居然和我返回前存放的數值不一樣。及改善 include...

c 輸出乙個陣列

關於c 輸出乙個陣列最普遍的方法就是用for 迴圈語句寫 如 int a new int 10 for int i 0 i a.length i for int j 0 j 今天我在瀏覽stackoverflow的時候發現了兩個簡便的輸出陣列的語句 鏈結如下 乙個是 foreach var item...

C語言 通過指標從函式返回乙個陣列

忘記最初在網上想找什麼資料了,偶然間看到這篇的,如果讓我自己寫的話,肯定不會寫的,好好學習了下。嚴格的講,無法直接從函式返回乙個陣列。但是,可以讓函式返回乙個指向任何資料結構的指標,當然也可以是乙個指向陣列的指標。下面直接貼 view plain copy to clipboard print?in...