Как перенести информацию в переменную из использования void

#c

#c

Вопрос:

Я новый программист, и я просто возился с функциями и тестировал переменные, где я застрял. Моя цель — создать функцию, которая, когда вы вводите свое имя и возраст, будет говорить «Привет (имя) Вам (возраст) » x3 с 3 разными именами и возрастами. В конце программа скажет «Привет (имя 1) (имя 2) (имя 3)», у меня все заработало, за исключением последней части и переноса информации об именах. Как это сделать. (Я использую C )


 #include <iostream>

using namespace std;



void whatisName(string name, int age)
{
    cout << "What is thy name: " << endl;
    cin >> name;
    cout << "What is thy age: " << endl;
    cin >> age;

    cout << "Hello " << name << " You are " << age << endl;
}

void allNames(string name1, string name2, string name3 )
{
    cout << "Hello " << name1 << " " << name2 << " " << name3 << " " << endl;
}

int main()
{
string myName, myName2, myName3;
int myage, myage2, myage3;



 whatisName(myName, myage);

 whatisName(myName2, myage2);

 whatisName(myName3, myage3);

 allNames (myName, myName2, myName3);
}
  

Комментарии:

1. Не связанный: Когда вы обнаруживаете, что последовательно нумеруете переменные, это обычно означает, что вам нужен массив. string myName, myName2, myName3; могло бы быть string names[3]; и использовалось whatisName(names[0], ages[0]); . Затем вы можете поместить код в цикл, например. for (int i = 0; i < 3; i ) { whatisName(names[i], ages[i]); }

Ответ №1:

Передавайте свои переменные по ссылке.

Изменить:

void whatisName(string name, int age) { ..

Для:

void whatisName(stringamp; name, intamp; age) { ...

Ответ №2:

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

     void whatisName(string name, int age){...} 
  

это не изменит имя параметра или возраст целого числа. Итак, если я вставлю в

     string a = "foo";
    int b = 16;
    whatisName(a,b)
  

Независимо от того, что происходит внутри функции a = «foo» и b = 16. Потому что мы не создали функцию для передачи по ссылке. Чтобы исправить это, мы переходим к объявлению функции и изменяем его следующим образом

     whatisName(string amp;name,intamp; age)
  

Теперь это изменит ее так, что параметры внутри этой функции можно будет изменять.