#include <stdlib.h>
#include <stdio.h>
int main (void)
{
int a[] = {1,2,3,4,5};
int b[] = {0,0,0,0,0};
int *p = b;
for (int i =0; i < 5; i++)
{
b[i] = a[i]+1;
*p = a[i]+1;
p++;
}
for (int i = 0; i < 5; i++)
{
printf (" %i \t %i \t %i \n", *p++, b[i], a[i]);
}
return 0;
}
Per questo codice si ottiene perché l'output per aeb ma perché il puntatore ha lo stesso valore di a?c puntatori e array
* p è b [0] = a [0] +1, non è vero? Quindi p ++ significa l'indirizzo successivo per b quindi è b [1] = a [1] +1.
ie
*p b a
1 2 1
2 3 2
3 4 3
4 5 4
5 6 5
È mislabeled le colonne: dovrebbe essere '* p b a', non' a b * p'. – dasblinkenlight
sì, il mio male. Fixato – user2135885
Per motivi di cambiamento-resistenza, meglio fare 'int b [sizeof (a)/sizeof (a [0])] = {...' e sostituire i valori '5' con lo stesso termine. In questo modo, puoi cambiare l'array 'a' e tutto andrà bene. – glglgl