Salve, sto da poco studiando il linguaggio C, avrei delle domande da porvi in modo da comprende il tema in maniera ottimale.
Prima domanda:
Se inizializzo un array di puntatore a carattere in questo modo:
codice:
char *data[4]={"uno","due","tre","quattro"};
quando voglio stamparlo a video posso utilizzare questa procedura, giusto?
codice:
int i;
printf("L'archivio è composto da:");
for (i=0; i<4; ++i)
if (data[i] != NULL)
printf(" %s ", data[i]);
printf("\n");
invece se l'archivio viene inizializzato attraverso una scanf come questa
codice:
char *data[4];
int i;
for (i=0; i<4; ++i)
scanf("%s", &data[i]);
devo, per stamparlo a video, utilizzare &.. come mai?
codice:
printf("L'archivio è composto da:");
for (i=0; i<7; ++i)
if (data[i] != NULL)
printf(" %s ", &datao[i]);
printf("\n");
Seconda domanda:
avendo queste istruzioni:
codice:
int iArr[15]={2,5,6,8};
int *iPtr;
printf("indirizzo di iArr: %X\n",iArr);
iPtr = iArr;
printf("indirizzo di iArr: %X\n",iPtr);
printf("primo elemento di iArr: %d\n",*iArr);
printf("secondo elemento di iArr: %d\n",*(iArr+1));
++iPtr;
printf("secondo elemento di iArr: %d\n",*iPtr);
come mai *iPtr punta al secondo elemento di iArr e non al primo visto che ha l'indirizzo base di quest'ultimo?
Come bisognerebbe fare per puntare al primo elemento? *(iPtr-1)?
Grazie!!