У меня есть следующая программа, в которой две переменные должны передаваться по ссылке на функцию, где их значения будут определяться на основе внешних факторов, прежде чем возвращаться к main()
, чтобы они могли использоваться другими функциями. Первая переменная, которую я пытаюсь передать, - это int
, и это нормально, но другой - это массив строк, что вызывает у меня некоторые проблемы.Как передать массив по ссылке на функцию в C++?
Я сделал достаточно исследований в этом, чтобы знать, что у вас нет массива или ссылок (хотя я еще не понял, почему), и мне было интересно, может ли кто-нибудь помочь мне разобраться, как это сделать ? Различные методы, которые я пробовал, привели к segmentation faults
.
NB: Приведенный ниже код имеет массив, передаваемый по значению, поскольку я просто не знаю, что написать для него.
Обновление: Я должен использовать массив для моей курсовой работы. Некоторая другая структура данных, такая как предложенная vector
, была бы замечательной, но я должен использовать определенные структуры.
void initialise_existing_devices(int& no_of_existing_devices, string existing_devices[100]);
int main()
{
int no_of_existing_devices = 0;
string existing_devices[100];
initialise_existing_devices(no_of_existing_devices, existing_devices[100]);
}
void initialise_existing_devices(int& no_of_existing_devices, string existing_devices[100])
{
string line;
ifstream DeviceList;
DeviceList.open("devices/device_list");
while (true)
{
getline(DeviceList, line, '\n');
if (DeviceList.eof())
{
break;
}
++ no_of_existing_devices;
}
DeviceList.close();
DeviceList.open("devices/device_list");
for (int i = 0; i < no_of_existing_devices; i ++)
{
getline(DeviceList, line, '\n');
existing_devices[i] = line;
}
}
код в вопросе пытается передать массив * в * функция, а не получить один , – 2010-11-23 23:13:34
@ Энди: он используется как параметр out; функция возвращает результаты через массив, который OP пытается передать по ссылке. Гораздо чище использовать возвращаемые значения вместо параметров. – 2010-11-23 23:14:44