Форум программистов, компьютерный форум CyberForum.ru

Возврат функцией массива структур - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать для разработанного класса методы-операторы http://www.cyberforum.ru/cpp-beginners/thread1190111.html
Реализовать для разработанного класса методы-операторы: +, - (плюс и минус) - для сложения и вычитания значений времени, при этом все данные должны быть типа CTime ++, --(два плюса или два минуса подряд) – уменьшение или увеличение значения времени на 1 секунду == (два знака равенства подряд) - для сравнения двух значений времени, результатом этой операции должен быть 0, если значения...
C++ Шифрование/дешифрование файлов методом перестановки Необходимо разработать программу для шифрования/дешифрования файлов методом перестановки. Размер блока 11 байт.Так же в программе должна быть возможность использования блочного шифра, в данном случае используется режим Output Feedback (OFB). Программа должна выводить информацию о процессе шифрования/дешифрования и информацию о скорости выполнения процедур (символов в секунду). Есть... http://www.cyberforum.ru/cpp-beginners/thread1190107.html
С++ Дана строка содержащая текст заканчивающийся точкой. Вывести на экран слова содержащие 3 буквы C++
ребята, буду очень благодарна за программу! и если не сложно, добавьте комментарии. но можно и без них. всем добра и шикарной погоды.
C++ Измерение и вывод времени, затраченного на сортировку чисел
Необходимо написать программу в с++, которая: Читает файл input.txt с числами (в каждой строке есть одно и только одно целое положительное число); в файле может быть от одного до 100000 (ста тысяч) чисел; сортирует числа по неубыванию; записывает отсортированные числа в файл output.txt (формат тот же: каждое число записывается в свою строку). Программа должна измерять время, затраченное на...
C++ Вид матрицы с нулевыми строками http://www.cyberforum.ru/cpp-beginners/thread1190087.html
помогите написать программу, где все элементы четных строк - нулевые. чтоб такую матрицу выводило.
C++ Головоломка //PC1.cpp== Считывает числа с текстового файла и записывает в массив. #include <fstream> #include <iostream> int SIZE = 50; using namespace std; int i; int main(int argc, char *argv) { system("chcp 1251"); подробнее

Показать сообщение отдельно
montkay
10 / 10 / 8
Регистрация: 19.02.2014
Сообщений: 72
28.05.2014, 10:17     Возврат функцией массива структур
Exzotick, начну с последнего вашего вопроса. Чтобы узнать размер поля структуры нужно узнать размер типа данных это поля. Но если поле структуры представлено в виде массива, то нужно, помимо размера типа данных, указать также количество элементов массива. По этому чтобы узнать размер поля структуры char name[30] нужно sizeof(char) * 30.

Да, вы правильно поняли - pStud - это указатель на массив структур, а n - количество его элементов. Если создать массив структур внутри функции, то этот массив по завершению функции будет уничтожен (если этот массив будет создан на стеке, а если нет - то без очистки динамической памяти будет засорятся оперативка). И для того, чтобы сохранить массив в программе, нужно в функцию передавать значение по ссылке или по указателю. Количество элементов есть обязательным (если используется динамический массив, а это как раз ваш случай).

Передавать в главную функцию указатель как это сделали вы - недопустимо, потому что указатель должен указывать на существующий объект. Сейчас объясню. Вот вы создаете и инициализируете в функции массив, а по завершению функции он умирает. Тогда на что будет указывать возвращаемое значение? Фактически это может быть всё, что угодно, но вряд ли нужное вам значение. Чтобы функция возвращала указатель, нужно чтобы она принимала указатель, обрабатывала его каким-то образом, а потом возвращала его. Тогда проблем не будет, ведь возвращаемое значение - существует вне функции, которую вызываете вы, а следовательно - после завершения функции объект будет живым =) И не забывайте использовать количество элементов обязательно, чтобы всегда знать, какой кусок памяти нужно обработать. Ведь если не знать размера этого куска памяти, то программа вплоть до аварийного завершения будет его обрабатывать.
 
Текущее время: 10:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru