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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужна подмога в C++, необходимо реализовать несложную игру http://www.cyberforum.ru/cpp-beginners/thread810756.html
Вот, собственно, задание: Написать программу, реализующую игру "Кто первый скажет сто". Играют двое. Игроки по очереди вводят числа из интервала .Вводимые числа складываются. Игра продолжается до...
C++ Удалить со строки слова Всем доброго времени суток. Мне нужно удалить со строки все слова которые начинаются на гласную с помощью: 1) Строки как массива символов. 2) Строки как класса string. Помогите пожалуйста.... http://www.cyberforum.ru/cpp-beginners/thread810752.html
Массив, объявленный как двумерный, является одномерным C++
Сабж в теме. Объявляю двумерный массив 5х5 строкой float mas; Затем заполняю его данными с клавиатуры. При компиляции ошибок никаких, но во время дебага тип массива определяется как float*. Притом,...
Битовые поля структур: что такое и зачем они нужны? C++
Собственно, вопрос в заголовке. Читал Шилдта, но там эта тема довольно расплывчата. Надеюсь, кто-нибудь сможет доходчиво объяснить.
C++ постфиксная перегрузка поная запись http://www.cyberforum.ru/cpp-beginners/thread810715.html
Здарова! создал класс Int2 как бы моделирующий int в нем решил перегрузить все операторы которые токо есть с вызовом в короткой форме и в полной. оператор постфиксный ++ перегрузил так Int2...
C++ функции и матрицы всем привет! задание следующее: Написать функции: 1. создания матрицы размерности , элементы матрицы А – вещественные числа. Параметры функции – сама матрица, ее размерность. 2. печати матрицы.... подробнее

Показать сообщение отдельно
hotpil
0 / 0 / 1
Регистрация: 01.01.2012
Сообщений: 7

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

17.03.2013, 11:40. Просмотров 502. Ответов 4
Метки (Все метки)

В книжках обычно пишут, что код типа

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 как и ожидается.

Почему? Ведь "а" же локальная переменная и после выхода из функции должна бы уничтожиться ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru