想請教關於變數宣告的問題
用靜態的方式宣告陣列,必須事先決定好array size
以便compiler決定要在這部份分配多少空間給該陣列
一般寫法大概就像這樣:
int a[100];
or
#define ARRAY_SIZE (100)
int a[ARRAY_SIZE];
如果是以傳參數作為陣列大小的宣告的話,通常應使用動態陣列宣告,如:
void showA(int array_size)
{
int *ary_ptr;
ary_ptr = (int *)malloc(array_size * sizeof(int));
/* Do something */
......
......
free(ary_ptr);
}
不過如果直接用靜態宣告法,實際上在測試時好像也可以正常運作,如:
void showB(int array_size)
{
int ary[array_size];
/* Do something */
......
......
}
想請問像showB function這樣的寫法,會不會有什麼問題?
還煩請先進給予指點,感謝