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

Указатель или ссылка на указатель. В чем разница? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выход за пределы массива при очистке памяти http://www.cyberforum.ru/cpp-beginners/thread986990.html
При попытке очистить память в конце функции вылетает ошибка HEAP CORRUPTION DETECTED. Не могу найти, где именно вылез за пределы массива. void stroki (int pos, int **mass) { int j_1, j_2;...
C++ Как задать цвет одного символа в консоли? итак рисую символ cor.X = (SHORT)j; cor.Y = (SHORT)i; SetConsoleCursorPosition(hConsole,cor); cout << (char)64 << endl;а как ему цвет задать? http://www.cyberforum.ru/cpp-beginners/thread986983.html
C++ Сортировка массива экземпляров класса
У меня есть почти готовая программа,проблема в main,программа не совсем коректно выдает результат в сортировке и ничево не выводит при выводе. Мне надо в главной программе продемонстрировать ввод /...
Чтение строки из файла C++
Задание: Считать из входного файла строку символов; переписать ее в выходной файл Проблема такая: В входном документе прописал Я выполнил третье задание. Долго думал, однако получилось. В...
C++ std::cin Debug Access failed http://www.cyberforum.ru/cpp-beginners/thread986955.html
Решил начать программировать в visual studio 2012 и сразу наткнулся на какую-то непонятную ошибку вот код: #include "stdafx.h" #include "iostream" using namespace std; int _tmain(int argc,...
C++ Не знаю как исправить ошыбку в коде Выбивает вот-это error C2679: бинарный "=": не найден оператор, принимающий правый операнд типа "flower (__cdecl *)(void)" (или приемлемое преобразование отсутствует). Ошыбка в этой строчке A=kvit_1.... подробнее

Показать сообщение отдельно
BurnItDown
2 / 2 / 0
Регистрация: 22.10.2013
Сообщений: 13
24.10.2013, 21:11  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
внутри f1 ты работаешь с копией указателя
И чтобы убедится в этом, я написал вот эту программу, с разными сообщениями чтобы можно было понять что к чему

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
30
31
32
33
34
35
#include <iostream>
#include <stdlib.h>
 
void f1(int *p) // p - копия указателя, но указывать он будет на ту же самую переменную, что и указатель из main()
{
    std::cout << "f1() :    p = " << p << " &p = " << &p << std::endl;
    p = new int(1);
    std::cout << "f1() :    p = " << p << " &p = " << &p << std::endl << std::endl;
}
 
void f2(int *&p)
{
    std::cout << "f2() :    p = " << p << " &p = " << &p << std::endl;
    p = new int(2);
    std::cout << "f2() :    p = " << p << " &p = " << &p << std::endl << std::endl;
}
 
 
int main()
{
    int n = 0;
    int *p = &n;
 
    std::cout << "main() : &n = " << &n << std::endl << std::endl;
 
    std::cout << "main() :  p = " << p << " &p = " << &p << std::endl << std::endl;
 
    f1(p);
 
    std::cout << "main() :  p = " << p << " &p = " << &p << std::endl << std::endl;
 
 
    system("pause");
    return 0;
}
Вот такой вывод
Код
main() : &n = 0012FF60

main() :  p = 0012FF60 &p = 0012FF54

f1() :    p = 0012FF60 &p = 0012FE7C
f1() :    p = 00345158 &p = 0012FE7C

main() :  p = 0012FF60 &p = 0012FF54
Видно, что адрес самого указателя в f1() совсем другой, чем в main()

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