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

При передачи указателя на обьект ошибка,а при передаче ссылки на указатель нет. Почему? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ метод перестановки максимального элемента http://www.cyberforum.ru/cpp-beginners/thread850050.html
Метод перестановки максимального элемента. Пусть дано некоторое число k,(0<k<n). Находим максимальныйэлемент среди чисел a0,...,ak. Пусть этим максимумом является некоторый элемент aj. Обмениваем...
C++ Подскажите плз, почему не работает Почему-то не работает цикл "for". При запуске кода в консольном окне переменная "h" проходит от "0" до "diametr". Но после окончания цикла когда хочу посмотреть все цифры, то показывает только 300... http://www.cyberforum.ru/cpp-beginners/thread850047.html
C++ Определить, есть ли в массиве строка, содержащая только отрицательные числа
дан двумерный массив целых чисел,определить есть ли в нем строка,содержащая только отрицательные числа дано двовимірний масив цілих чисел,визначити чи є в ньому стрічка,що містить тільки відємні...
Опишите процесс вычисления выражения заданного выражения 3 + 2 * x -0,5 – 4 / x. Обраб отайте ошибку извлечения квадратного корня из отрицательного C++
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <conio.h> #include <string> #include <sstream> #include <stdlib.h> #include <string.h> #include <math.h> using namespace...
C++ Функция вставки в list http://www.cyberforum.ru/cpp-beginners/thread850007.html
Вставить элемент Е после каждого элемента списка, превышающего некоторое значение Р. #include <iostream> #include <list> using namespace std; void Insert (list<int> l) { int p, e, t, n = 0;;...
C++ Задача в паскале. Вводитс восьмизначное число. Поменять в нем местами соседние цифры Вводится восьмизначное число. Поменять в нем местами соседние цифры. К понедельнику срочно надо. подробнее

Показать сообщение отдельно
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2013, 15:25
Не видно, как код используется.
Вот так будет ошибка:
C++
1
2
3
SomeObj* obj = NULL;
someFun(obj);
printf("%d\n", obj->x);
А так не будет:
C++
1
2
3
SomeObj* obj = NULL;
someFun2(obj);
printf("%d\n", obj->x);
Разница в том, что в первом варианте, в функции, работа идёт с копией указателя (передача по значению). При выходе из функции копия перестаёт существовать, obj по прежнему содержит NULL. Память, выделенная в функции, потеряна. Во втором варианте, работа идёт непосредственно с obj (передача по ссылке). После выхода из функции, obj содержит адресс выделенной памяти.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru