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

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

Войти
Регистрация
Восстановить пароль
 
dserp18
10 / 10 / 0
Регистрация: 20.01.2013
Сообщений: 91
Записей в блоге: 4
#1

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

19.08.2013, 01:51. Просмотров 466. Ответов 2
Метки нет (Все метки)

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++
Павловская Т.С. Пример (программа печатает таблицу значений функции г/=х2+1 во введенном диапазоне): ...

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

Пример из книги. Шилдт - C++
Всем привет. Вот пример из книги Шилдта. У меня не работает деструктор (не выводится сообщение) #include &lt;iostream&gt; using namespace...

Пример из книги Лафоре - C++
В третьей главе книги Лафоре по с++ есть пример использующий функцию getche(): #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...

Простой пример из книги - C++
Решил сделать все задания Павловской Т.А. С/С++ и вот с самого первого примера не понял кое-что. Сама программа вылетает и не показывает...

Пример из книги не работает. - C++
Пример из книги, тема Классы но смотрю что нет обращения к Task::swap(int i,int j) Думаю ошибка именно в Task::sort(int size). ...

Непонятный пример из книги - C++
Не могу никак разобраться в одном маленьком примере из книги, речь идёт про условную операцию. Распишите плз, как действует при i=0 i=1 i= 2

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

Не работает пример из книги - C++
Я писал код из книжки и ничего не работает. #include &lt;iostream&gt; using namespace std; #include &lt;conio.h&gt; int main(){ ...

пример из книги страуструпа - C++
struct pair { char* name; // ñòðîêà int val; // öåëîå }; const int large = 1024; ...

пример из книги не хочет работать. - C++
Купил недавно книгу &quot;Освой самостоятельно с++ за 21 день&quot;. и наткнулся на проблему. программа, набранная из книги не работает. ...

Не работает пример из книги Лафоре - C++
Доброго времени суток! Взялся решать задачу из книги Лафоре, глава 9, упр. 2. Опробовал уже готовое решение из самой книги- не работает. ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
19.08.2013, 03:22     пример из книги #2
Если бы вы сделали вот так:
C++
1
int *pc = &a ;
только тогда в нем был бы адрес, а так у вас pc просто указатель на значение.
alsav22
5416 / 4812 / 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, то понимает его как указатель на начало строки, которую нужно вывести.
Ответ Создать тему
Опции темы

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