Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/28: Рейтинг темы: голосов - 28, средняя оценка - 4.86
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
1

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

07.07.2012, 05:43. Просмотров 5394. Ответов 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, возвращающая минимальное из трех целых чисел
Разработать заданные согласно условия функции и сделать в главной программе по два вызова этих...

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

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

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

Функция, возвращающая указатель на структуру
Помогите пожалуйста понять в чем ошибка! Функция create должна возвращать указатель на структуру...

4
alsav22
5453 / 4848 / 831
Регистрация: 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 / 16
Регистрация: 12.05.2011
Сообщений: 450
07.07.2012, 20:08 4
тебе же сказали, что твоя ошибка в том, что твоя функция возвращает указатель на локальную переменную, которая уничтожается как только ты вышел из этой функции
0
alsav22
5453 / 4848 / 831
Регистрация: 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

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

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

Функция, возвращающая умный указатель
Здравствуйте, помогите пожалуйста создать функцию, возвращающую умный указатель. Мой вариант не...


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

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

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