Форум: Форум C++Разное
Новые темы: 00
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Указатели 2
 
 автор: Alexhoppus   (12.06.2010 в 01:36)   письмо автору
 
 

  long *key_byte1,*key_byte2;
  long k1=11;
  long k2=31;
  key_byte1=&k1;
  key_byte2=&k2;
  cout<<key_byte2-key_byte1<<endl;
  getchar();

В этом коде я пробовал объявлять и указатели и перемменные разными типами, но результат всегда один -1. Указатель на тип char должен ссылаться на 2 байта памяти, а long на 8 по-моему, а почему тут получается всегда 1?

  Ответить  
 
 автор: Alexhoppus   (12.06.2010 в 12:52)   письмо автору
 
   для: Alexhoppus   (12.06.2010 в 01:36)
 

все понятно, зависит от типа указателя

  Ответить  
 
 автор: vvmcpp   (20.12.2010 в 11:48)   письмо автору
 
   для: Alexhoppus   (12.06.2010 в 01:36)
 

// ты вычисляеш разницу между адресами памяти
// то есть никакой на самом деле длинны или размера не вычисляеш
//

#include <iostream>

using namespace std;
int main(){

long *key_byte1,*key_byte2;

long k1=11;
long k2=31;

key_byte1=&k1;
key_byte2=&k2;

// тут хранятся адреса переменных
cout<<"\nkey_byte2=" <<key_byte2<<endl; //0x22ff68
cout<< "\nkey_byte1="<<key_byte1<<endl; //0x22ff6c

// по этим адресам содержимое переменных
cout<<"\n*key_byte1=" <<*key_byte1<<endl;
cout<<"\n*key_byte2=" <<*key_byte2<<endl;

getchar();

return 0;

}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования