С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.95
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
#1

Функция возвращающая указатель на int - C++

07.07.2012, 05:43. Просмотров 3713. Ответов 4
Метки нет (Все метки)

Не могу понять ошибки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// prata 7 pt to function.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "iostream"
#include <conio.h>
 
using namespace std;
 
int* f(int);
 
int _tmain(int argc, _TCHAR* argv[])
{
    int *ptf=f(7);
    cout<<(*ptf)<<endl;
    cout<<ptf<<endl;
    int *ptf1=f(9);
    cout<<(*ptf1)<<endl<<(ptf1);
    getch();
 
    return 0;
}
 
int* f(int a)
{
    a*=a;
    int* pt=&a;
    return pt;
}
Возвращает странные значения хотя по-моему должна возвращать сначала 49, потом 81.
С адрессом все в порядке.
А так возвращает то что нужно
C++
1
2
3
4
5
6
7
8
9
10
11
int _tmain(int argc, _TCHAR* argv[])
{
    int *ptf=f(7);
    cout<<*ptf;
    cout<<endl<<ptf<<endl;
    int *ptf1=f(9);
    cout<<*ptf1;
    cout<<endl<<ptf1<<endl;
    getch();
    return 0;
}
Это особенности работы сout?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2012, 05:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция возвращающая указатель на int (C++):

Функция возвращающая абсолютное разницу первого и второго параметров и функция типа int, возвращающая минимальное из трех целых чисел - C++
Разработать заданные согласно условия функции и сделать в главной программе по два вызова этих функций с различными параметрами. Для...

Функция, возвращающая указатель - C++
Добрый вечер. Требуется написать программу, содержащую структуру вида type1 *имя(type2); т.е. функцию, которая принимает аргумент типа...

Функция, возвращающая указатель - C++
Здравствуйте. Пускай есть класс Some_type и массив такого класса. Можно ли функцией Some_type* some_name (some_type) заполнять массив,...

Функция, возвращающая указатель - C++
Нужно написать функцию, входящие параметры которой являются указателем на структуру. Заполнить в функции структуру (не важно). Возвратить...

Функция, возвращающая указатель на структуру - C++
Помогите пожалуйста понять в чем ошибка! Функция create должна возвращать указатель на структуру Vector #include &lt;iostream&gt; using...

Функция, возвращающая умный указатель - C++
Здравствуйте, помогите пожалуйста создать функцию, возвращающую умный указатель. Мой вариант не рабочий: class InterfaceVideo{ public:...

4
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2012, 07:08 #2
По моему, вся заморочка в том, что функция f() возвращает указатель на локальную переменную a, которая, после выхода из функции, уже не существует.

Добавлено через 6 минут
Если через указатели действовать, то правильно будет, примерно, так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <conio.h>
#include "iostream"
using namespace std;
 
int* f(int*);
 
int main()
{
    int n = 7;
    int *ptf = f(&n);
    cout << *ptf << endl;
    cout << ptf << endl;
    n = 9;
    int *ptf1 = f(&n);
    cout << *ptf1 << endl << ptf1;
    getch();
    
    return 0;
}
 
int* f(int *a)
{
    (*a) *= (*a);
    
    return a;
}
0
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
07.07.2012, 19:58  [ТС] #3
Да у меня тоже работает я не пойму почему не раотает 1 вариант?
0
yekka
386 / 150 / 8
Регистрация: 12.05.2011
Сообщений: 450
07.07.2012, 20:08 #4
тебе же сказали, что твоя ошибка в том, что твоя функция возвращает указатель на локальную переменную, которая уничтожается как только ты вышел из этой функции
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2012, 04:12 #5
Цитата Сообщение от Aliru777 Посмотреть сообщение
Да у меня тоже работает я не пойму почему не раотает 1 вариант?
Почему первый вариант не работает я уже написал. Странно, что второй работает. Точно не знаю, но предполагаю, что это как-то связано с работой стека. При первом вызове cout<<*ptf; переменная ещё существует, после этого там уже мусор. В любом случае - это ошибка.
0
08.07.2012, 04:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2012, 04:12
Привет! Вот еще темы с ответами:

Функция, возвращающая указатель на структуру - C++
Ребят помогите пожалуйста,как создать функцию возвращающую указатель на структуру,в общем задание звучит так:написать библиотеку для...

Функция, возвращающая указатель на функцию - C++
Всем привет, Мне нужно создать функцию, которая будет возвращает указатель на функцию. Я создам массив указателей на функцию, присвою...

Структура и функция, возвращающая указатель на структуру - C++
Добрый вечер! В чем проявляется особенность функции, если мы даем ей тип от имени структуры? (или как правильно называется такое...

Функция, возвращающая указатель на двумерный массив - C++
Добрый день! Столкнулся с конструкцией которую раньше не видел, и не до конца понимаю что это и как работает: #include &lt;stdio.h&gt; ...


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

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

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