#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)
Теперь это изменит ее так, что параметры внутри этой функции можно будет изменять.