專題 如何定義乙個可變長陣列?

2021-08-16 22:09:02 字數 912 閱讀 8926

與本文章無關的背景(就是想吐吐槽嘛~):昨天刷codeup的時候,碰到字串的問題,就頭皮發麻,然後今天早上吃「老譚酸菜牛肉麵」(《譚浩強版c程式設計》)的時候,翻到對於可變長陣列定義的方法。

—————————————————————分割線————版權歸老譚擁有——————————————————————

首先,看一下像我這樣的小菜鳥一開始會這樣定義

int n;

scanf("%d",&n);

int a[n];

顯然是不行的

為什麼陣列為靜態儲存方式時不能用可變長陣列呢????

老譚只說了「c語言不允許對陣列的大小作動態定義,即陣列的大小不依賴於程式執行過程中變數的值。」「如果指定陣列為靜態儲存方式時,則不能用可變長陣列(得,又複述了一遍題目=   =)」。

to tell you the truth,我還是不懂,,,然後翻了自己的筆記

靜態儲存方式在編譯時分配固定大小的記憶體區域,不能用可變長陣列;

老譚又說「如果被呼叫的函式(不包括主函式)中定義陣列,其長度可以是變數或者非常量表示式」

void func(int n)
——————————分割線————版權歸老譚擁有完————————————————————————————————

我跑去試了一下

#include#includevoid func(int n)

}int main()

誒呦,還不錯呦。

//程式實現的功能和上乙個程式一樣,注意比較之間的區別

#include#include using namespace std;

int main()

return 0;

}

如何使用可變長引數的函式實現乙個print函式

print 的第乙個引數指定後續各引數的型別,第二個引數開始指定需要輸出的值。例如 print sscddd hello world 2018,4,21 在這個例子中,通過第乙個引數 sscddd 制定後續的引數型別為 字串,字串,字元,int,int,int 在這裡s代表字串,c代表字元,d代表整...

用 C 實現乙個變長陣列

我想用 c 的人都用過 std vector 它是乙個可變長的陣列,在很多時候都比 c 固有的定長陣列要靈活。c 裡沒有這樣的標準化設施,但是寫軟體的人通常都會實現乙個。正所謂,不厭其煩的重造輪子 d 這裡我們不討論造輪子的好壞問題,直接討論下實現這麼個東西的一點小技巧吧。總是固執於用誰做的輪子的問...

用vector實現乙個變長陣列

所謂陣列,有這樣的性質 c語言中的陣列,一旦長度定義,就不能改變。有時候需要動態增加陣列長度,而且想保留上述性質,這時候就可以用vector。vector模擬了c語言中陣列的操作,比如取值,下標越界未定義等。最重要的,它支援size 和resize 方法,可以獲得陣列長度,以及擴充套件陣列長度。這樣...