Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
dserp18
10 / 10 / 1
Регистрация: 20.01.2013
Сообщений: 122
Записей в блоге: 5
#1

пример из книги

19.08.2013, 01:51. Просмотров 511. Ответов 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 имеют одинаковые значения, ведь в одном случае это(вроде бы) адреса, а в другом - значения по этим адресам?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2013, 01:51
Ответы с готовыми решениями:

Пример из книги не работает.
Пример из книги, тема Классы но смотрю что нет обращения к Task::swap(int...

Непонятный пример из книги
Не могу никак разобраться в одном маленьком примере из книги, речь идёт про...

Пример из книги. Шилдт
Всем привет. Вот пример из книги Шилдта. У меня не работает деструктор (не...

пример из книги страуструпа
struct pair { char* name; // ñòðîêà int val; //...

Пример с книги не компилируется!
Павловская Т.С. Пример (программа печатает...

2
Bend3r
149 / 136 / 35
Регистрация: 29.07.2012
Сообщений: 709
19.08.2013, 03:22 #2
Если бы вы сделали вот так:
C++
1
int *pc = &a ;
только тогда в нем был бы адрес, а так у вас pc просто указатель на значение.
1
alsav22
5441 / 4836 / 831
Регистрация: 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, то понимает его как указатель на начало строки, которую нужно вывести.
3
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2013, 10:50

Пример из книги Лафоре
В третьей главе книги Лафоре по с++ есть пример использующий функцию getche():...

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

Не работает пример из книги
Я писал код из книжки и ничего не работает. #include &lt;iostream&gt; using...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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