|
|
|
| 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 в 01:36)
| | все понятно, зависит от типа указателя | |
|
|
|
|
|
|
|
для: 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;
} | |
|
|
|