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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать для разработанного класса методы-операторы http://www.cyberforum.ru/cpp-beginners/thread1190111.html
Реализовать для разработанного класса методы-операторы: +, - (плюс и минус) - для сложения и вычитания значений времени, при этом все данные должны быть типа CTime ++, --(два плюса или два минуса...
C++ Шифрование/дешифрование файлов методом перестановки Необходимо разработать программу для шифрования/дешифрования файлов методом перестановки. Размер блока 11 байт.Так же в программе должна быть возможность использования блочного шифра, в данном... http://www.cyberforum.ru/cpp-beginners/thread1190107.html
С++ Дана строка содержащая текст заканчивающийся точкой. Вывести на экран слова содержащие 3 буквы C++
ребята, буду очень благодарна за программу! и если не сложно, добавьте комментарии. но можно и без них. всем добра и шикарной погоды.
C++ Измерение и вывод времени, затраченного на сортировку чисел
Необходимо написать программу в с++, которая: Читает файл input.txt с числами (в каждой строке есть одно и только одно целое положительное число); в файле может быть от одного до 100000 (ста...
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) { ... подробнее

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

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

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