2

私は次のコードを持っています

 int arr[5];
        printf("Input values:");
        for (i=0;i<5;i++)
        scanf("%d",&arr[i]);
        pthread_create(&thread1, NULL, &inputfunction, (void *)&arr);
        pthread_join(thread1,NULL);
        return 0;
}

void *inputfunction(void *ptr_value)
{
        int value= *((int *) ptr_value);
        printf("value=%d", value);
//      printf(&(ptr_value));
        return NULL;
}

配列に入力した5つの値すべてを取得したいのですが、関数の本体でこのコードを使用すると、最初の値だけが返されます。私はポインタと非常に混同していて、配列全体を取得する方法を理解できません。

コードに加える必要のある変更を教えてください。

ありがとう

4

1 に答える 1

3

これを試して:

pthread_create(&thread1, NULL, &inputfunction, &(arr[0]));

void *inputfunction(void *ptr_value)
{
    int *values = ptr_value;

    for (int i = 0; i < 5; i++)
         printf("value %i = %i\n", i, values[i]);

    return NULL;
}
于 2012-05-23T00:04:27.987 に答える