與本文章無關的背景(就是想吐吐槽嘛~):昨天刷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 方法,可以獲得陣列長度,以及擴充套件陣列長度。這樣...