-0.8から0.8の間の乱数でベクトル(割り当てる必要があります)を埋めようとします。私の質問は、関数を呼び出したときにメイン関数でsetvector()がベクトルを返さず、ゼロで初期化されたものを取得するのはなぜですか?どうもありがとう。ここで私がしたこと
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void allocate(double **a, int size) {
*a = malloc(size);
}
double setvector(double *v){
int i, seed, send_size;
send_size = 10;
allocate(&v, send_size * sizeof(double)); // allocate memory for the vector
seed = time(NULL);
srand(seed);
for (i = 0; i < send_size; i++)
{
v[i] = 1.6*((double) rand() / (double) RAND_MAX) - 0.8;
}
printf("Inside function the vector is:\n\n");
for (i = 0; i < 10; i++)
{
printf("The %d element has the random %4.2f\n", i, v[i]);
}
return *v;
}
int main(){
double *v = NULL;
setvector(v);
printf("\nThe vector from main is:\n\n");
printf("The 1st element of v is %4.2f\n", &v[0]);
printf("The 1st element of v is %4.2f\n", &v[1]);
return 0;
}
これが私の画面出力です:
関数内のベクトルは次のとおりです。
0要素はランダム-0.79を持っています 1
要素はランダムを持っています-0.342要素はランダムを持っています0.483要素はランダムを持っています-0.674要素はランダムを持っています-0.705要素は ランダム を持っています0.616 要素は 持っていますランダム-0.677 要素はランダム-0.66を持ってい ます8要素はランダムを持っています-0.449 要素はランダムを持っています-0.36mainからのベクトルは次のとおりです。
vの最初の要素は0.00です。v
の最初の要素は0.00です。