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

Что будет выведено на экран по данным указателям и ссылкам? - C++

Восстановить пароль Регистрация
 
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
11.10.2011, 00:57     Что будет выведено на экран по данным указателям и ссылкам? #1
Привет! Все никак до конца не могу понять указатели и ссылки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <iostream>
 
using namespace std;
 
int main(int argc, char* argv[]) {
    int a = 25;
    int *pa = &a;;
    cout << a << endl;
    cout << pa << endl;
    cout << *pa << endl;
    cout << &*pa << endl;
    cout << &pa <<endl;
    system("PAUSE");
    return (EXIT_SUCCESS);
}
Не могли бы вы мне подсказать, в какой строчке что будет выведено (из си-оутов)? Заранее благодарю!
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.10.2011, 01:20     Что будет выведено на экран по данным указателям и ссылкам? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Илларион Посмотреть сообщение
Не могли бы вы мне подсказать, в какой строчке что будет выведено
а скомпилировать и посмотреть не?
код
C
1
2
3
4
5
6
7
8
9
10
11
int main ()
{
    int a = 25, *p;
    p = &a;
    printf("%x\n", a);
    printf("%x\n", p);
    printf("%x\n", *p);
    printf("%x\n",&*p);
    printf("%x\n",&p);
    return 0;
}

вывод
Код
19               значение a
bfda75cc      адрес а
19               значение а
bfda75cc      адрес а
bfda75c8     адрес р
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
11.10.2011, 01:24     Что будет выведено на экран по данным указателям и ссылкам? #3
Только ссылки здесь ни причем. Указатели и адреса. Ссылка это другая штука.
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
11.10.2011, 01:35  [ТС]     Что будет выведено на экран по данным указателям и ссылкам? #4
Спасибо. Вот только хотел спросить. Несколько раз запускал программу и значения адресов всегда одинаковое. Но ведь оперативка- это весчь очень динамичная, так почему переменная все время записывается в одно и тоже место? Оно разве не может быть забито чем-то другим?

Добавлено через 7 минут
И ещё, можно ли средствами С++ обратиться к какому-нить вымышленному адресу и получить его значение? Или это невозможно из-за техники безопасности?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.10.2011, 01:39     Что будет выведено на экран по данным указателям и ссылкам? #5
Илларион, переменная записывается туда на время выполнения программы (и не обязательно в ОЗУ, есть места и "пооперативней")

Добавлено через 2 минуты
Цитата Сообщение от Илларион Посмотреть сообщение
И ещё, можно ли средствами С++ обратиться к какому-нить вымышленному адресу и получить его значение? Или это невозможно из-за техники безопасности?
все можно, но не все нужно.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
11.10.2011, 06:51     Что будет выведено на экран по данным указателям и ссылкам? #6
Цитата Сообщение от Илларион Посмотреть сообщение
И ещё, можно ли средствами С++ обратиться к какому-нить вымышленному адресу и получить его значение?
C++
1
2
3
4
5
6
7
8
9
10
11
[nameless@desktop c]$ cat main.c
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char* c = (char*) 0xDeadBabe;
    putchar(*c);
    
    exit(0);
}
Код
[nameless@desktop c]$ ./sample 
Ошибка сегментирования (core dumped)
[nameless@desktop c]$
Yandex
Объявления
11.10.2011, 06:51     Что будет выведено на экран по данным указателям и ссылкам?
Ответ Создать тему
Опции темы

Текущее время: 14:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru