CodeInside
@CodeInside

Как правильно передать в функцию ссылку на двумерный массив?

Есть файл со строками (вариантами ответов). В этом файле наборы строк разделены пустой строкой (4 варианта -> пустая строка -> 4 варианта и т.д.). В области видимости функции main есть двумерный массив строк response[15][4]. У меня синтаксическая ошибка при передаче адреса массива в функцию. Кто что может подкорректировать/подсказать?
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

void readResponses(string,string**);

void main()
{

	string response[15][4];//варианты ответов (15 вопросов * 4 варианта)

	readResponses("responses.txt",response);//здесь синтаксическая ошибка, ибо функция не может принять указатель на двумерный массив
}

void readResponses(string address,string** rPointer)//считывает варианты ответов с файла по полученному адресу и записывает их в строки указателя
{
	ifstream fResponses(address);
	string empty;//для разделения сетов строк
	for(int i =0; i< 15; i++)//15 вопросов
	{
		for(int j = 0; j < 4; j++)//4варианта ответов
		getline(fResponses,rPointer[i][j]);//считывание и запись строки
	}
	getline(fResponses,empty);//сэты вариантов ответа разделены пустой строкой -> переход на следующий сэт
}
}


Когда писал вопрос подумал: или имя двумерного массива не является указателем на указатель? :|
  • Вопрос задан
  • 1720 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
void readResponses(string address, string (&rResponse)[15][4]) {}


Двухмерный массив — НЕ указатели на указатель, это тебе не Ява. Это массив одномерных массивов.

Нормального способа передачи массивов фиксированной длины в Си нет (только через ук-ль на первый элемент), в Си++ — через ссылку.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Olej
@Olej
инженер, программист, преподаватель
или имя двумерного массива не является указателем на указатель?

Является.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы