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);//сэты вариантов ответа разделены пустой строкой -> переход на следующий сэт
}
}


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


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

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

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

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

Войти через центр авторизации
Похожие вопросы
САТЕЛ Нижний Новгород
от 160 000 ₽
CNS Loyalty Москва
от 110 000 до 120 000 ₽
от 140 000 до 200 000 ₽
09 мая 2024, в 10:15
3000 руб./за проект
09 мая 2024, в 10:08
100000 руб./за проект