Python不用事先宣告陣列大小,但C語言中就要先宣告才能使用,這讓我產生疑惑。
有多少人用餐入座前要先講好。
臨時要加人的話需要重新入座。
Python:去隔壁桌拿張椅子就可以
VBA:要重新入座
C語言:重新入座+1
「陣列一開始就要宣告大小」,
這句話讓人感到茫然,
因為Python沒有這個問題(大概是小精靈在幫忙)。
VBA有看過同時使用Dim
和ReDim
,
那時候覺得多此一舉,
只用Dim
宣告大小不就好了。
現在才明白為什麼
在陣列滿載情況下新增1個元素,
以下為三個語言作法。
Python
list = [2,3]
list.append(5)
VBA
Dim arr(1) As Long
arr = array(2,3)
ReDim arr(2)
arr(2) = 5
C語言
#include <stdio.h>
int main(){
int arr[2];
arr[0] = 2;
arr[1] = 3;
int newarr[3];
for(int ari = 0;ari < 2;++ari){
newarr[ari] = arr[ari];
}
newarr[2] = 3;
return 0;
}
c語言陣列不夠放是一件麻煩事,
但鏈結串列可以解決這個問題,
直接加節點。
讀資料結構才有機會學到「陣列是需要連續記憶體空間」,
因為要確認陣列大小,
才知道要分配多少記憶體空間。
題外話,推薦VBA陣列教學這是純英文教學寫得很深入,
很適合進階學習。
原本想趕12點前發文,結果還是超過。
感謝撥冗閱讀,有誤歡迎指教。