簡體   English   中英

將大小賦予帶有變量的數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM