2013-05-10 5 views
1

У меня только 2 быстрых вопроса, я надеюсь, что кто-то может уточнить для меня.Функция без возврата типа

  1. При записи функции входной список параметров совпадает с параметрами?
  2. , когда функция не имеет типа возврата, является «return 0;» просто ушел из кода функции?

Например, если бы я должен был написать функцию, которая используется для целых чисел в списке входных параметров, не тип возвращаемого значения будет ли это правильный способ написать это ?:

int convertTemp(int a, int b) {} 
+0

Если функция не имеет типа возврата, возвращение 0 будет ошибкой, так как 0 является 'int'. – juanchopanza

+0

Кроме того, чтобы не быть слишком педантичным, «функция», которая ничего не возвращает, не является функцией, а рутиной. – Sparky

+2

@Sparky: Или подпрограмма или процедура, в зависимости от вашего выбора терминологии. В терминологии C++ это все еще функция. –

ответ

1
int convertTemp(int a, int b) {} 

должно быть:

void convertTemp(int a, int b) {} 

Если функция ничего не возвращает, int означает, что тип возврата функции - int. Обратите внимание, что вы все еще можете иметь операторы return в функции, которая с обратным типом void.

+0

Благодарим за помощь :) – user2085224

+0

@ user2085224 добро пожаловать! – taocp

0

Вы хотите сделать тип возвращаемого void

void convertTemp(int a, int b) { 
    //do stuff... 
    return; //optional, but a good habit to get in to 
} 
+0

'return' является необязательным в конце функции. –

+0

@MikeSeymour Да, но, имхо, это хорошая практика. – eidsonator

0
  1. Список входных параметров представляет собой список типов и названий входов. Это проходы как список значений в вызывающем коде.
  2. Если у вас нет возвращаемого значения, функция объявляется с возвращаемым типом void и не должна иметь значения, указанного в инструкции return.
1

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

void func (int a, int b) {}

, тогда как фактические параметры 2 и 3 в вызове функции:

func (2,3)

, где 2 копируется в а и 3 копируется в b.

0

Используйте тип void возвращения объявить функции не вернут ничего:

void convertTemp(int a, int b) { 
} 

Теперь, как бы функции преобразовать Temp, когда она ничего не возвращает?

Это должно определенно не изменять какое-либо состояние за кулисами (например, глобальные переменные).

Возвращение конвертированного значения - это то, что я ожидал бы.

Возвращаемый тип void должен быть изменен на тип результата преобразования.

Я бы определенно исследовал, столкнувшись с кодом, как указано выше.

Смежные вопросы