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

пример из книги - C++

Восстановить пароль Регистрация
 
dserp18
 Аватар для dserp18
0 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 74
Записей в блоге: 2
19.08.2013, 01:51     пример из книги #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
    long summa (int k,...){
     int *pik=&k;
     char *pc=(char *)pik;    
     cout <<" *pc="<<*pc<<" pc="<<pc;
     long total =0;
     for (int x=k;x>0;x--) {
            pc=pc+4;
       total=total+*pc;
     //pik=(int *)pc;
       cout <<"\n *pc="<<*pc<<" pc="<<pc;
         }
     return total;     }
     int main(){
         cout <<"\n summa(2,6,4)="<<summa(2,6,4);
         cout <<"\n summa(6,1,2,3,4,5,6)= "<<summa(6,1,2,3,4,5,6)<<"\n";  }
Вопрос : почему у меня pc и *pc имеют одинаковые значения, ведь в одном случае это(вроде бы) адреса, а в другом - значения по этим адресам?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2013, 01:51     пример из книги
Посмотрите здесь:

Пример из книги не работает. C++
Пример из книги Лафоре C++
пример из книги страуструпа C++
C++ Пример из книги Лафоре
C++ Непонятный пример из книги
Простой пример из книги C++
Пример с книги не компилируется! C++
C++ Пример из книги- ну, напутан

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
19.08.2013, 03:22     пример из книги #2
Если бы вы сделали вот так:
C++
1
int *pc = &a ;
только тогда в нем был бы адрес, а так у вас pc просто указатель на значение.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.08.2013, 10:50     пример из книги #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Bend3r Посмотреть сообщение
Если бы вы сделали вот так:
C++
1
int *pc = &a ;
А у него сделано:
C++
1
2
int *pik=&k;
char *pc=(char *)pik;
Цитата Сообщение от Bend3r Посмотреть сообщение
а так у вас pc просто указатель на значение
Это и есть указатель.

Цитата Сообщение от dserp18 Посмотреть сообщение
Вопрос : почему у меня pc и *pc имеют одинаковые значения, ведь в одном случае это(вроде бы) адреса, а в другом - значения по этим адресам?
Чтобы вывести адрес, который содержится в указателе на char, нужно привести указатель к типу void*:
C++
1
cout << "\n *pc = " << *pc << " pc = " << (void*)pc;
Добавлено через 7 часов 9 минут
Забыл написать почему так нужно сделать. Оператор вывода устроен так, что если всречает указатель на char, то понимает его как указатель на начало строки, которую нужно вывести.
Yandex
Объявления
19.08.2013, 10:50     пример из книги
Ответ Создать тему
Опции темы

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