我需要将一个常量大小的数组传递给C中的函数,但只能使用该数组的一部分。具体来说,有以下伪码说明我的情况:如何仅将一部分输入数组用于函数?
void my_function(int arr_end,double arr[20]) {
Create new array arr_new that contains elements 0 to arr_end or arr
Use arr_new
}
到目前为止,我试图做到以下几点:
void my_function(int arr_end,double arr[20]) {
double arr_new[arr_end+1];
int i;
for(i=0;i<=arr_end;i++){
arr_new[i] = arr[i];
}
// Now I can do what I want with arr_new
}
但我得到的错误:int arr_end expression must have a constant value
。下面是错误的在Visual Studio 2015年社区的截图:
我的问题是arr_end
不是恒定的(这意味着在不同的时间我想提取的arr
不同部分)。
如何才能达到我想要的效果(使arr_new
包含arr
的一部分)仅适用于基本代码,而不使用malloc
或类似的东西?谢谢!
[无法重现。(http://ideone.com/cM8Zfv)确定错误是来自该块的代码抛出? – Downvoter
我认为这与数据类型有冲突,double arr_new和int arr_end – Fil
@Fil数组索引应该是非负整数。不应该在这里比较'arr_new'和'arr_end'。 – ameyCU