ポインターに問題があります。
その要点は、1つの関数でポインターを定義し、その関数をメインで呼び出してそれらのポインターを使用しようとしていることです。私の課題の正確な指示は次のとおりです。
キーボードから 3 つの数値を読み取る関数と、これらの 3 つの数値に関する情報を出力する関数の 2 つの関数を作成します。
入力機能
3 つの整数ポインター パラメーターを持ち、ユーザーに 3 つの整数を入力するよう求める関数を作成します。キーボードで入力された値は、ポインタ パラメータに格納されているアドレスに読み込まれる必要があります。
注: scanf には変数のアドレスが必要であり、ポインターはアドレスを格納することを思い出してください。
値の印刷
a2question2 という 2 番目の関数を、戻り値もパラメーターも指定せずに作成します。関数は 3 つの整数変数を宣言し、入力関数を使用してこれらの変数に値を読み込む必要があります。関数は、合計、平均、積、およびこれらの数値の最小値と最大値を出力する必要があります。
これが私がこれまでに持っているものです:
int pntloc (int *x, int *y, int *z){
int a = 0;
int b = 0;
int c = 0;
printf("Please enter integer #1: ");
scanf ("%d", & a);
printf ("Please enter integer #2: ");
scanf ("%d", & b);
printf("Please enter integer #3: ");
scanf ("%d", & c);
*x = &a;
*y = &b;
*z = &c;
return *x, *y, *z;
}
// Fourth function
main (){
int x, y, z;
pntloc(x, y, z);
int sum = 0;
int average = 0;
int product = 0;
int smallest = 0;
int largest = 0;
printf ("%d", x);
}
しかし、プログラムが 3 つの整数を要求した後、何もせずにクラッシュします。
最初の関数はそれ自体で正常に動作します (パラメーターなしでメイン関数にしてテストし、ポインター値を出力しました)。
printf ("%d", *x);
したがって、ある関数から次の関数に値が渡されていないと思います。最初と 2 番目の関数を書くさまざまな方法を試しましたが、何もうまくいかないようです。
私が得た最善の方法は、プログラムがクラッシュしないようにすることでしたが、出力された値は以前に入力したものとはどこにもありませんでした。
これを行う方法はありますか?