В основном, мой вопрос в том, сколько байтов имеет один или несколько адресов?Сколько байтов занимает адрес?
Я имею в виду char
занимает 1 байт на моей платформе и имеет 1 адрес. Но int
занимает 4 байта. Сколько адресов делает это int
? У него все еще есть только 1 адрес или у него есть 4?
Например:
char c = 'A'; //Address at 0xdeadbeee
int i = 45846; //Address at 0xdeadbeef
int* iPtr = &i;
iPtr++; //Address at 0xdeadbef3 now
Что происходит с адресами между 0xdeadbeef
и 0xdeadbef3
? Все ли они зарезервированы для i
? Что произойдет с i, когда я укажу на 0xdeadbeee
(должен быть ровно один адрес | байт или что-то еще под i
) и изменить его значение?
Редактировать: для тех, кто все еще будет отвечать, я не хочу знать, насколько велика целое число. Я хочу знать, имеет ли он 4 адреса при использовании 4 байтов памяти и что происходит (если у него 4 адреса) при изменении значения одного из этих адресов.
Надеюсь, теперь это яснее.
Каждый байт является адресуемым, но только один адрес предназначен для 'int'. –
«В принципе, мой вопрос в том, сколько байтов имеет один или несколько адресов?» -> 'sizeof (T *)' скажет вам об этом. Но ваш вопрос не в том, что касается «размера адреса». Еще раз, вы спрашиваете, почему арифметика указателя работает так, как она работает. –
Возможный дубликат [Арифметика указателей] (http://stackoverflow.com/questions/394767/pointer-arithmetic) –