Как вызвать один аргумент из функции с несколькими аргументами в C? - PullRequest
0 голосов
/ 12 мая 2019

Скажем, у вас есть несколько таких функций:

void Inventory(int index, char input[], int qty)

void AddItem(){
     int index = Inventory(index);
     if (int i = 0; i < index; i++){
          ...
     }
}

Но это дало мне ошибку 'Значение типа "Void" нельзя использовать для инициализации объекта типа "int"'

Может кто-нибудь объяснить мне подробно, так как я тоже новичок в программировании.

Ответы [ 4 ]

3 голосов
/ 12 мая 2019

Вы пытаетесь инициализировать index как int, значение которого возвращается путем вызова Inventory(index). Но предоставленная вами функция Inventory имеет тип возвращаемого значения void, а не ожидаемое int, поэтому получить это значение невозможно.

Кроме того, в вашем вызове Inventory отсутствует аргумент для параметров chat input[] и int qty. Кроме того, index неинициализируется в тот момент, когда вы пытаетесь его использовать (в пределах определения index).

2 голосов
/ 12 мая 2019

Функция Inventory не возвращает ничего (то есть void), и вы пытаетесь повлиять на 'ничто' на переменную типа int. Вот почему компилятор жалуется.

Решение состоит в том, чтобы ваша функция Inventory возвращала значение int вместо void.

0 голосов
/ 12 мая 2019
  1. void foo (/ ... /) означает, что функция foo ничего не возвращает.Таким образом, вы не можете ничего присвоить чему-либо.
  2. В C вам нужно передать все параметры.В других языках (например, C ++) некоторые параметры могут иметь значения по умолчанию, и вам не нужно передавать их при вызове функции.Но это невозможно в языке Си, и вам нужно передать все параметры (аргументы)
0 голосов
/ 12 мая 2019

Прежде всего, предоставленный вами вопрос и фрагмент кода вводят в заблуждение.

Во-вторых, вы получаете эту ошибку, потому что возвращаемый тип функции Inventory - Void, что означает, что она ничего не возвращает. И вы пытаетесь ничего не присвоить переменной index, которая имеет тип int.

И, если вы пытаетесь вызвать функцию с несколькими аргументами без передачи всех аргументов, сделайте оставшуюся часть аргумента необязательной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...