大小我寫計算陣列和這種陣列本身之間外差的函數,並且只保存那些陽性結果(見下面的代碼)有一種方法,以確定陣列的基於叔
void outer_pos(double *x, int *n, double *output){
int i, j, l;
for(i=0, l=0; i<*n; i++){
for(j=0; j<*n; j++){
if((x[j]-x[i])>0){
output[l+1]=x[j]-x[i];
output[0]=(double)(++l);
}
}
}
}
然後,在下面的函數中,我打電話outer_pos
。一個問題是數組xouter可能包含綁定值。如果沒有連接值,則正數差異的數量是(nsamp)(* nsamp-1)/ 2,但是具有連接值時,實際數量會更小。所以我想知道是否有什麼方法可以聲明v1v2,這樣的大小取決於outer_pos
的結果。我主要使用R,它不需要你初始化數組,所以我不知道如何能在C.做
void foo(double *x, double *y, int *nsamp){
int i, j, k, oper=2, l;
double* result=malloc(sizeof(double)*((*nsamp)*(*nsamp-1)/2 + 1));
double* xouter=malloc(sizeof(double)*(*nsamp));
for(i=0;i<*nsamp;i++)
xouter[i]=x[i]+y[i];
outer_pos(xouter, nsamp, &result[0]);
free(xouter);
.
.
.
.
}
使用malloc C代碼應該工作。結果是什麼? – 2013-05-10 14:21:52
你的意思是'outer_pos'的結果是什麼?基本上我的意思是我想'v1v2'的大小爲'l'(注意'outer_pos'中的計數器)。如果有綁定的值,那麼'l'會比'* nsamp *(* nsamp-1)/ 2'小。但是現在我基本上把v1v2的長度聲明爲'* nsamp *(* nsamp-1)/ 2',而不管它需要的實際大小。 – Alex 2013-05-10 14:45:46