[英]Giving the size to an array with a variable
我一直試圖通過一個變量給一個數組它的大小,但它不起作用,因為“必須有一個常量值”。
int processes[] = { 1, 2, 3 };
int n = sizeof processes / sizeof processes[0];
...
findavgTime(processes, n);
-------------------------------------------------
void findavgTime(int processes[], int n, int bt[])
{
int wt[n], tat[n]; //These two vars are giving me the error
}
我錯過了什么嗎?
如您所見,您可以像這樣聲明一個非常量大小的數組。 但是,您可以使用new
動態分配它:
int* wt = new int[n];
int* tat = new int[n];
只是不要忘記,完成后您需要delete[]
這些 arrays。
您可以像 Mureinik 所說的那樣在堆上分配它,但您也可以使用alloca()
在堆棧上分配它(就像您嘗試做的那樣),如下所示:
int* wt = (int*)alloca(n * sizeof(int));
int* tat = (int*)alloca(n * sizeof(int));
free()
不應該被調用,因為它是在堆棧上分配的,而不是在堆上。
有人說使用alloca()
是不好的做法,因為如果調用導致堆棧溢出,則程序行為未定義。 只要數組不太長,這應該不是問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.