С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Tsegorah
1 / 1 / 0
Регистрация: 02.03.2014
Сообщений: 104
1

Возврат массива из функции

27.09.2014, 17:28. Просмотров 438. Ответов 1
Метки нет (Все метки)

В объекте есть массив int state[3][3];, который мне нужно из него вытащить. Вижуал показывал ошибку, когда я пытался вернуть указатель state в методе класса, тогда я написал метод, который возвращает указатель на созданный в методе одномерный массив, получившийся разворачиванием двумерного.

Вопрос 1: массив же будет удалён в конце метода?
Вопрос 2: если я объявлю массив до метода и передам его в метод, будет ли в методе создана своя копия массива, которая по завершении удалится, не оставив изменений в оригинале. но оставив указатель на пустое место? Если я объявлю до метода указатель на массив и выделю память new, произойдёт ли то же самое? Считается ли это плохим стилем программирования?

Потом я создал структуру:
C++
1
2
3
4
5
struct L_M
{
    int mass[9];
    friend Node;
}L_M;
, и стал возвращать из метода её. Вижуал выдал ошибку, что "переменная "L_M" не является именем типа". Тогда я написал typedef перед struct, ошибка исчезла.

Вопрос 3: почему? Почему структура без typedef - не тип, а с ним - тип? Что есть тип тогда? А класс - тип?
Вопрос 4: есть более простой способ передать массив из объекта?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2014, 17:28
Ответы с готовыми решениями:

Возврат массива из функции
Здравствуйте, Не пойму почему не работает данный код. Пишет cannot convert...

Возврат массива из функции
Есть задача: используя функции, вычислить количество элементов заранее...

Возврат массива из функции
Здравствуйте! Нужно решить задачу, но для её решения я не могу понять как...

Возврат массива из функции
Программа должна переводить числа с 10 системы в двоичную... но почемуто...

Возврат массива из функции
Здравствуйте. Не могу разобраться, почему при передачи массива из функции но не...

1
alsav22
5445 / 4840 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2014, 18:53 2
Цитата Сообщение от Tsegorah Посмотреть сообщение
Вопрос 2: если я объявлю массив до метода и передам его в метод, будет ли в методе создана своя копия массива, которая по завершении удалится, не оставив изменений в оригинале. но оставив указатель на пустое место?
Нет. В функцию передаётся указатель на первый элемент массива, а не сам массив.

Добавлено через 1 минуту
Цитата Сообщение от Tsegorah Посмотреть сообщение
Вопрос 1: массив же будет удалён в конце метода?
Если массив создан в автоматической памяти (на стеке), то да.

Добавлено через 3 минуты
Цитата Сообщение от Tsegorah Посмотреть сообщение
Если я объявлю до метода указатель на массив и выделю память new, произойдёт ли то же самое?
Что то же самое? Если создали массив в динамической памяти, то он будет жить пока не удалите, или до конца программы.
Цитата Сообщение от Tsegorah Посмотреть сообщение
Считается ли это плохим стилем программирования?
Нет.

Добавлено через 5 минут
Цитата Сообщение от Tsegorah Посмотреть сообщение
Вопрос 3: почему? Почему структура без typedef - не тип, а с ним - тип? Что есть тип тогда? А класс - тип?
Вот это объявление типа (или class L_M):
C++
1
2
struct L_M
{};
а, то что вы написали после тела струкруры: L_M - это объект этого типа, но имя объекта должно отличаться от типа.

Добавлено через 10 минут
Когда же пишите:
C++
1
2
3
4
5
typedef struct L_M
 {
 int mass[9];
 friend Node;
 }L_M; // новое имя
, то задаёте новое имя для типа struct L_M, в данном случае, то же самое (L_M).
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2014, 18:53

возврат динамического массива из функции
Всем привет, вот часть кода функцииchar *result=new char; int ind=0; ...

Возврат созданного в функции массива
Верна ли следующая конструкция? void LoadArray(float* array, int & count)...

Не могу организовать возврат массива из функции
Помогите пожалуйста! Надо сделать так, чтоб deystvie1 возвращал готовый массив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru