У меня возникают проблемы с указателями.Указатели в качестве аргументов функции, которая вызывает scanf
Суть его в том, что я пытаюсь определить указатели в одной функции и называть эту функцию в моей основной для использования этих указателей. Точные инструкции для моего назначения являются следующие:
написать две функции, одна из которых читает три номера с клавиатуры и тот, который печатает некоторую информацию об этих трех чисел.
Вход Функция
Написать функцию, которая имеет три параметра целочисленный указатель, и что просит пользователя ввести три целых чисел. Значения, введенные на клавиатуре , следует считывать по адресам, указанным в параметрах указателя .
Примечание: напомним, что scanf требует адрес переменной и что указатели хранят адреса.
Печати Значение
Написать вторую функцию под названием a2question2, без возвращаемого значения и без параметров. Функция должна объявлять три целочисленные переменные , а затем использовать вашу функцию ввода для чтения значений в эти переменные. Затем функция должна распечатать сумму, среднее значение, произведение и наименьшее и самое большое из этих чисел.
Вот то, что я до сих пор:
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);
}
Однако, после того, как программа спросит меня за три целых числа, он выходит из строя, не делая ничего.
Первая функция прекрасно работает его самостоятельно (протестировал его, сделав его основную функцию без параметров и печатал значение указателей), то есть:
printf ("%d", *x);
Так что я думаю, что значения просто не переходя из одной функции к следующему. Я пробовал различные способы написания первой и второй функции, но ничего не работает.
Лучшее, что я получил, заключалось в том, чтобы программа не сработала, но печатная ценность была нигде в том, что я вводил раньше.
Любые идеи, как это сделать?
'* x = & a' должно быть' x = & a' и так далее ... Есть много ошибок. Ваша функция возвращает 'int', и у вас есть' return * x, * y, * z; ' – Bill
a b и c будут недоступны после того, как мы выйдем из функции, поэтому * x и т. Д. Будут недействительными. – John3136