[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