Puntatori

di il
4 risposte

Puntatori

Salve ragazzi,
Dovrei fare questo esercizio:
Scrivere un programma che chieda in input N interi allocando dinamicamente il vettore x.
Creare un puntatore p al vettore x e calcolare la
somma degli interi usando l’aritmetica dei puntatori (quindi non usare x).
Mostrare a video la somma ottenuta.


Volevo chiedervi perchè esce questo Warning quando compilo :

warning: assignment from incompatible pointer type [enabled by default].

Vi lascio il mio codice...

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
int *px, *ps;
int i, somma, *x;
int N;


printf("Dammi la dimensione del vettore: ");
scanf("%d", &N);

x = (int *)malloc(N * sizeof(int));


printf("Dammi questi %d valori: ", N);

for (i=0; i<N; i++){
scanf("%d", &x);
}

px = &x;

somma = 0;
ps = &somma;

for(i =0; i<N; i++){

*ps = *ps + px;

}
printf("La somma vale: %d", *ps);

free (x);
return 0;
}


Vi allego anche il risultato

Allegati:
16176_933b7c683e7b41554a938e9d2854ba75.png
16176_933b7c683e7b41554a938e9d2854ba75.png

4 Risposte

  • Re: Puntatori

    Così potrebbe andare.
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main (void)
    {
      int* p;
      int i, somma, *x;
      int N;
    
     printf("Dammi la dimensione del vettore: ");
     scanf("%d", &N);
    
     x = (int *)malloc(N * sizeof(int));
    
    
     printf("Dammi questi %d valori: \n", N);
    
     for (i=0; i<N; i++){
       scanf("%d", &x[i]);
     }
    
     somma = 0;
     p = x;
     for(i =0; i<N; i++){
       somma+= *(p+i);
     }
     printf("La somma vale: %d\n", somma);
    
     free (x);
     return 0;
    }
    
    
    p = &x[0] è equivalente alla scrittura p = x. Entrambi i modi di scrivere fanno sì che il puntatore p, punti all'indirizzo iniziale dell'array x.
    Quindi tramite l'aritmetica dei puntatori puoi puntare su tutti gli indirizzi dell'array "puntatore + indice",
    per poi dereferenziarlo per accedere al contenuto di quell'indirizzo.
    *(p+i).
    Correggetemi se sbaglio.
  • Re: Puntatori

    Ti ringrazio moltissimo, adesso oltre che a funzionare ho capito come far funzionare i puntatori con il vettore.... CHEERS bro
  • Re: Puntatori

    Dato che non deve usare x dovrebbe cambiare anche questa riga

    scanf("%d", &x);
  • Re: Puntatori

    Si giusto. Grande mi fa piacere
Devi accedere o registrarti per scrivere nel forum
4 risposte