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

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

Войти
Регистрация
Восстановить пароль
 
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
#1

Найти ошибку в функции - C++

24.03.2010, 23:29. Просмотров 744. Ответов 17
Метки нет (Все метки)

C++
1
2
3
4
int&  f(){
int *a=new int;
return *a;
}
скопилировал-ошибок нет...но тут ясно что не очищается памяь,знаю...надо делете написать,Но функция возвращает указатель а при объявлении было написано & то есть ссылка,объясните что тут такое...?

Добавлено через 18 секунд
почему компилятор не находит ошибки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2010, 23:29     Найти ошибку в функции
Посмотрите здесь:

Найти ошибку в функции - C++
Само задание: Дан массив из М целых чисел. Если в массиве есть хотя бы одно простое число, сформировать новый массив, поместив в него из...

Найти ошибку в вызове функции. - C++
Подскажите, что не так, независимо от того, какую операцию выбираю: 1 или 2(байты в биты или биты в байты), выполняется одно и тоже (байты...

Не могу найти ошибку в функции - C++
не могу найти ошибку, помогите очень срочно надо. вот код #include <stdio.h> #include <stdlib.h> #include <conio.h> #include...

Функции (найти ошибку в коде) - C++
Ребят помогите найти ошибку пожалуйста, не хочет запускаться. #include <iostream> #include <conio.h> const int M = 3; ...

Найти ошибку в перегруженной функции - C++
Почему-то произведению присваивется размер массива. #include "stdafx.h" #include <iostream> #include <fstream> #include...

Указатели на функции, найти ошибку в коде - C++
Доброго времени суток. Мне нужен массив указателей на функции. Компилятор выдает ошибку, не могу понять, в чем она заключается. ...

Найти ошибку в коде функции поиска - C++
не могу найти ошибку, помогите, кто может?( ошибка в поиске) #include <iostream> #include <iomanip> #include <io.h> #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
25.03.2010, 00:27     Найти ошибку в функции #2
Потому, что функция возращает не указатель, а значение int, находящееся по адресу указателя "a"
Если бы возращался указатель, то было бы написано
return a; Тогда компилятор выдал бы ошибку.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
25.03.2010, 18:27  [ТС]     Найти ошибку в функции #3
Зоти Сергей, а если писать
C++
1
int *func()
?

Добавлено через 10 секунд
это разве не тоже самое
yanyk1n
4329 / 1460 / 152
Регистрация: 12.03.2009
Сообщений: 5,310
25.03.2010, 18:31     Найти ошибку в функции #4
МедведЪ, int& - возвращает ссылку на тип int
int* - возвращает указатель на int
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
25.03.2010, 18:55  [ТС]     Найти ошибку в функции #5
k1ry4, а что это такое означает?
Цитата Сообщение от МедведЪ Посмотреть сообщение
return *a;
yanyk1n
4329 / 1460 / 152
Регистрация: 12.03.2009
Сообщений: 5,310
25.03.2010, 19:00     Найти ошибку в функции #6
МедведЪ, возвращает то значение, которое записано по адресу a
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
25.03.2010, 19:05  [ТС]     Найти ошибку в функции #7
k1ry4, хм...значит эта функция просто возвращает ссылку?
yanyk1n
4329 / 1460 / 152
Регистрация: 12.03.2009
Сообщений: 5,310
25.03.2010, 19:07     Найти ошибку в функции #8
МедведЪ, как видишь, да
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
25.03.2010, 19:20     Найти ошибку в функции #9
МедведЪ:
Про это в книге есть что-нибудь.
C++
1
int ********func(void******,...);
Добавлено через 10 минут
C++
1
2
3
4
5
6
7
8
9
10
int&  f(){
int *a=new int;
return *a; /*трактуется как разадресация, при разадресации мы можем брать ссылку на динамический объект. */
}
 
int main(){
int &p = f();
delete &p;   
return 0;
}
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.03.2010, 19:26     Найти ошибку в функции #10
МедведЪ, в данном случае надо четко понимать различие ссылки и указателя.

Указатель это переменная, хранящая адрес объекта.
Для получения адреса объекта можно воспользоваться операцией взятия адреса &.
Пример:
C++
1
2
int n = 10;
int* p = &n;
В данном примере получаем адрес переменной n и записываем его в указатель p.

Для доступа к объекту, адрес которого хранит указатель можно использовать операцию разименовения указателя *.
Пример:
C++
1
2
3
int n = 10;
int* p = &n;
int m = *p;
В результате выполнения данного фрагмента переменная m получит значение равное 10.

Ссылка является псевдонимом некоторого объекта. При изменении псевдонима изменяется и сам объект, и наоборот, при изменении объекта изменяться псевдоним.
Пример:
C++
1
2
3
4
int n = 10;
int& r = n;
n = 1; // n == 1, r == 1
r = 2; // n == 2, r == 2
Здесь мы объявили ссылку r на переменную n.

Ссылка по сути является разименованным константным указателем.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
25.03.2010, 19:33  [ТС]     Найти ошибку в функции #11
CyBOSSeR, да я все это хорошенько зубрил..но про функцию начал возмущаться
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
25.03.2010, 19:34     Найти ошибку в функции #12
Поясню термин что бы было понятно: разадресация == разыменование .
Это одни и те же понятия.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
25.03.2010, 19:37  [ТС]     Найти ошибку в функции #13
ладно,я понял..когда скажем пишем
C++
1
2
3
int *a=0;
int b=0;
a=&b;
вот этот оператор & тоже самое и для функции,то есть тоже самое действие выполняет

Добавлено через 1 минуту
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Поясню термин что бы было понятно: разадресация == разыменование .
Оо я про это ниче не знаю...думаю узнаю
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
25.03.2010, 19:44     Найти ошибку в функции #14
Почитай то что написал CyBOSSeR тогда узнаешь.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
25.03.2010, 19:49  [ТС]     Найти ошибку в функции #15
про разадрессацию не знаю...а разыменование знаю
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.03.2010, 19:52     Найти ошибку в функции #16
Цитата Сообщение от МедведЪ Посмотреть сообщение
про разадрессацию не знаю...а разыменование знаю
Это одно и тоже.
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
26.03.2010, 02:49     Найти ошибку в функции #17
Цитата Сообщение от МедведЪ Посмотреть сообщение
про разадрессацию не знаю
я тож такого термина не слышал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2010, 10:52     Найти ошибку в функции
Еще ссылки по теме:

Помогите найти ошибку в функции сортировки выбором - C++
Хотел реализовать так чтобы в функции шла сортировка выбором но когда хочу чтоб на экран вывелся весь отсортированный массив то выводиться...

Программа вычисляющая значение функции. не могу найти ошибку - C++
привет!)) помогите пожалуйста найти ошибку в программе. #include <conio.h> #include <iostream.h> #include <math.h> #include...

Помогите найти ошибку в программе вычисления значения функции - C++
Написал программу, ругается я так понимаю на модуль, хотя библиотеку я подключил, помогите... Вот код: #include <iostream> #include...

Найти ошибку (Вычисление функции с помощью разложения в ряд) - C++
Итак,проблема с разницей в показаниях Задание #include <iostream> #include <conio.h> #include <clocale> #include <cmath>...

Не могу найти ошибку в функции перевода строк в 16-ричную СС - C++
Привет, есть функция: void calc(int num,int base) { if (num == 0) return; int rem = num % base; if (rem...


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

Или воспользуйтесь поиском по форуму:
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
26.03.2010, 10:52     Найти ошибку в функции #18
разадрессацию:
А в одной литературе может написано разадрессация, а в другой разыменование.
У меня есть книга в которой и то и другое называют, и так понятно о чём речь.
Yandex
Объявления
26.03.2010, 10:52     Найти ошибку в функции
Ответ Создать тему
Опции темы

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