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

Оператор new внутри функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужна подмога в C++, необходимо реализовать несложную игру http://www.cyberforum.ru/cpp-beginners/thread810756.html
Вот, собственно, задание: Написать программу, реализующую игру "Кто первый скажет сто". Играют двое. Игроки по очереди вводят числа из интервала .Вводимые числа складываются. Игра продолжается до тех пор, пока окончательная сумма не станет равна 100. Выигрывает тот, после хода которого получается эта сумма. P.S. Очень нужна помощь, брату необходимо сдать в универ, но он перенес операцию на...
C++ Удалить со строки слова Всем доброго времени суток. Мне нужно удалить со строки все слова которые начинаются на гласную с помощью: 1) Строки как массива символов. 2) Строки как класса string. Помогите пожалуйста. Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread810752.html
Массив, объявленный как двумерный, является одномерным C++
Сабж в теме. Объявляю двумерный массив 5х5 строкой float mas; Затем заполняю его данными с клавиатуры. При компиляции ошибок никаких, но во время дебага тип массива определяется как float*. Притом, с массивом curM, объявленным аналогично в функции det все нормально - двумерный, как и положено. #include "stdafx.h" using namespace std; float det(float mas, int n, int m, int x, int y);
Битовые поля структур: что такое и зачем они нужны? C++
Собственно, вопрос в заголовке. Читал Шилдта, но там эта тема довольно расплывчата. Надеюсь, кто-нибудь сможет доходчиво объяснить.
C++ постфиксная перегрузка поная запись http://www.cyberforum.ru/cpp-beginners/thread810715.html
Здарова! создал класс Int2 как бы моделирующий int в нем решил перегрузить все операторы которые токо есть с вызовом в короткой форме и в полной. оператор постфиксный ++ перегрузил так Int2 operator++(int) { return val++; //это открытый член-значение класса. }
C++ функции и матрицы всем привет! задание следующее: Написать функции: 1. создания матрицы размерности , элементы матрицы А – вещественные числа. Параметры функции – сама матрица, ее размерность. 2. печати матрицы. Параметры функции – сама матрица, ее размерность. 3. поиска суммы положительных элементов матрицы. для начала написал без функций, создает и печатает без проблем. Написал с функцией и крах...... подробнее

Показать сообщение отдельно
hotpil
0 / 0 / 1
Регистрация: 01.01.2012
Сообщений: 7
17.03.2013, 11:40     Оператор new внутри функции
В книжках обычно пишут, что код типа

C
1
2
3
4
int*  f_bad ( ){
        int а = 5;
        return &а; / / нельзя!
}
неверен, так как локальная переменная исчезает после выхода из функции и указатель на нее возвращать бессмысленно. Но вот такой код выводит же правильный ответ (то есть 6):

C
1
2
3
4
5
6
int main () {
    int *k;
    k=f_bad(6);
    cout << "k= " << *k << endl;
    return 0;
}
Тогда в чем ошибка?

И второй вопрос: корректна ли функция вроде
C
1
2
3
4
5
int* func(int j) {
    int* a=new int;
    *a=j;
    return a;
}
Она тоже "работает":
C
1
2
3
4
5
6
int main () {
    int *k;
    k=func(5);
    cout << "k= " << *k << endl;
    return 0;
}
выводит 5 как и ожидается.

Почему? Ведь "а" же локальная переменная и после выхода из функции должна бы уничтожиться ...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru