SemmaiOriginariamente inviato da darth fener
Ma questo vale solo per i vettori giusto?
Se io ho una variabile int b=3; e un'altra int *a;
gli dico a=&b; poi se voglio mettere un valore nella locazione di memoria successiva ad a faccio
*(a+(1*sizeof(int)))=4;
*(a+(2*sizeof(int)))=5;
, visto che il compilatore considera già le dimensioni della variabile.codice:*(a+1)=4; *(a+2)=5;
No, in questa maniera stai assegnando valori a memoria non inizializzata o riservata ad altri scopi, il che è un ottimo modo per ottenere errori strani e mandare in crash il programma.giusto? così alla fine non mi sono realizzato indirettamente un array?
È una cosa che puoi scrivere e compilare, ma che probabilmente ti conduce ad un segmentation fault. Su praticamente tutte le macchine moderne non puoi accedere alla memoria come ti pare, è il sistema operativo che gestisce la memoria e la alloca su richiesta dei programmi; a questo proposito il C fornisce le funzioni malloc, calloc, realloc e free.PS: posso assegnare un indirizzo di memoria libero manualmente ad un puntatore, tipo a=0xFF....?