Menu
Coddy logo textTech

Valore vs puntatore

Lezione 7 di 17 del corso Funzioni in C di Coddy.

Quando passiamo parametri a una funzione, possiamo farlo in due modi: per valore o tramite puntatore. Vediamo un semplice esempio per capire cosa intendiamo per valore e puntatore:

#include <stdio.h>

void sum(int a) {
   a = a + 1;
   printf("sum function: %d\n", a);
}

int main(void) {
   int a = 10;
   sum(a);
   printf("main function: %d\n", a);
   return 0;
}

L'output:

sum function: 11 
main function: 10 

Come puoi vedere in questo esempio, usiamo il valore, quindi il valore della variabile a non è cambiato. Tuttavia, se dobbiamo accedere alla variabile e modificarne il valore, possiamo usare un puntatore come parametro.

#include <stdio.h>

void sum(int *a) {
   *a = *a + 1;
   printf("sum function: %d\n", *a);
}

int main(void) {
   int a = 10;
   sum(&a);
   printf("main function: %d\n", a);
   return 0;
}

Poiché ora la funzione accetta un puntatore come parametro, quando viene chiamata devi passare l'indirizzo della variabile:

sum(&a);

L'output:

sum function: 11 
main function: 11 
challenge icon

Sfida

Facile

Nel codice fornito, definiamo una variabile chiamata y.

  • Scrivi una funzione square che accetta un puntatore a un intero come parametro.
  • All'interno di questa funzione, eleva al quadrato il valore della variabile a cui punta il puntatore e stampa il suo valore.
  • Stampa il valore della variabile sia nella funzione square sia nella funzione main per mostrare che la variabile originale è stata modificata.

Provalo tu

#include <stdio.h>


// Funzione square per elevare al quadrato un valore tramite puntatore
 
int main(void) {

    int a = 200;
    
    // Chiama la funzione square
     
    // Stampa la variabile originale 
    
    return 0;
}

Tutte le lezioni di Funzioni in C

Esercitati da solo: Compilatore C online