[so] [SO] Workshop 4 - Review
Andrei Vasiliu
andrei.vasiliu2211 at cti.pub.ro
Sat Mar 23 00:20:42 EET 2013
Buna,
Am avut aceasta intrebare la workshop si acum o am si de corectat:
Fie p un pointer către un întreg pe un sistem pe 32 de biţi. Ştiind că valoarea
lui p este 0xC0000004, ce valoare are p + 1?
Mi se pare ca intrebarea nu e formulata foarte clar, in sensul ca daca pointerul
p spre integer este de tip int*, atunci p+1 este 0xC0000008, dar daca p este de
tip char*, atunci p+1 este 0xC0000005.
Am realizat si un program pentru a arata acest aspect:
#include <stdio.h>
int main(void){
int a = 5;
char *char_pointer_to_integer = (char*)&a;
int *int_pointer_to_integer = &a;
printf("char_pointer_to_integer = %p, char_pointer_to_integer+1 = %p\n",
char_pointer_to_integer, char_pointer_to_integer+1);
printf("int_pointer_to_integer = %p, int_pointer_to_integer+1 = %p\n",
int_pointer_to_integer, int_pointer_to_integer+1);
return 0;
}
care are output-ul:
char_pointer_to_integer = 0xbfa021a4, char_pointer_to_integer+1 = 0xbfa021a5
int_pointer_to_integer = 0xbfa021a4, int_pointer_to_integer+1 = 0xbfa021a8
QED ;))
Deci, cum ar trebui abordata aceasta intrebare?
Multumesc anticipat,
Andrei
More information about the so
mailing list