Passaggio di array come argomenti di funzione in C

Ciao là, futuro superstar del编程! ? Oggi, ci imbarcheremo in un viaggio entusiasmante attraverso il mondo degli array e delle funzioni in C. Come il tuo amico insegnante di scienze informatiche del quartiere, sono qui per guidarti in questa avventura passo per passo. Quindi, prendi il tuo zaino virtuale e tuffati!

C - Passing Arrays to Function

Comprendere array e funzioni

Prima di immergerci nel passaggio di array alle funzioni, rinfreschiamo rapidamente la memoria su cosa sono gli array e le funzioni.

Cos'è un Array?

Pensa a un array come una fila di armadietti in un corridoio scolastico. Ogni armadietto (elemento) ha un numero (indice) e può contenere qualcosa al suo interno. In C, utilizziamo gli array per memorizzare più elementi dello stesso tipo in una singola variabile.

Cos'è una Funzione?

Una funzione è come un mini-programma all'interno del nostro programma principale. È un set di istruzioni che esegue un compito specifico. Pensa a esso come una scheda di ricetta in un ricettario - puoi usarla ogni volta che hai bisogno di eseguire quel compito particolare.

Ora che abbiamo coperto le basi, esploriamo come possiamo combinare questi due concetti!

Passaggio di array come argomenti di funzione

In C, possiamo passare array alle funzioni in diversi modi. Esaminiamo ogni metodo uno per uno.

1. Passaggio Array con il Metodo di Chiamata per Valore

In C, quando passiamo un array a una funzione, stiamo effettivamente passando l'indirizzo del primo elemento dell'array. Questo significa che qualsiasi modifica apportata all'array all'interno della funzione influenzerà l'array originale.

Ecco un esempio:

#include <stdio.h>

void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

int main() {
int myArray[] = {1, 2, 3, 4, 5};
int size = sizeof(myArray) / sizeof(myArray[0]);

printf("Array originale: ");
printArray(myArray, size);

return 0;
}

In questo esempio, stiamo passando myArray alla funzione printArray. Anche se sembra che stiamo passando l'intero array, stiamo effettivamente passando un puntatore al primo elemento.

Output:

Array originale: 1 2 3 4 5

2. Passaggio Array con il Metodo di Chiamata per Riferimento

In C, gli array sono sempre passati per riferimento. Questo significa che quando passi un array a una funzione, stai effettivamente passando un puntatore al primo elemento dell'array.

Ecco un esempio in cui modificiamo l'array all'interno della funzione:

#include <stdio.h>

void doubleElements(int arr[], int size) {
for (int i = 0; i < size; i++) {
arr[i] *= 2;
}
}

int main() {
int myArray[] = {1, 2, 3, 4, 5};
int size = sizeof(myArray) / sizeof(myArray[0]);

printf("Array originale: ");
for (int i = 0; i < size; i++) {
printf("%d ", myArray[i]);
}
printf("\n");

doubleElements(myArray, size);

printf("Array modificato: ");
for (int i = 0; i < size; i++) {
printf("%d ", myArray[i]);
}
printf("\n");

return 0;
}

In questo esempio, la funzione doubleElements modifica l'array originale raddoppiando ogni elemento.

Output:

Array originale: 1 2 3 4 5
Array modificato: 2 4 6 8 10

3. Passaggio di un Array Bidimensionale a una Funzione

Ora, livello superiore e parliamo del passaggio di array bidimensionali alle funzioni. È come consegnare un intero foglio di lavoro invece di una singola riga!

Ecco un esempio:

#include <stdio.h>

void print2DArray(int rows, int cols, int arr[rows][cols]) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}

int main() {
int myArray[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

printf("Il mio Array Bidimensionale:\n");
print2DArray(3, 3, myArray);

return 0;
}

In questo esempio, stiamo passando un array bidimensionale alla funzione print2DArray. Nota come specifichiamo le dimensioni nel parametro della funzione.

Output:

Il mio Array Bidimensionale:
1 2 3
4 5 6
7 8 9

4. Funzione per Confrontare la Lunghezza delle Stringhe

Ultimo ma non meno importante, esaminiamo come possiamo passare le stringhe (che sono essenzialmente array di caratteri) alle funzioni. Creeremo una funzione che confronta la lunghezza di due stringhe.

#include <stdio.h>
#include <string.h>

int compareStringLengths(char str1[], char str2[]) {
int len1 = strlen(str1);
int len2 = strlen(str2);

if (len1 > len2) return 1;
if (len1 < len2) return -1;
return 0;
}

int main() {
char string1[] = "Hello";
char string2[] = "World!";

int result = compareStringLengths(string1, string2);

if (result > 0) {
printf("%s è più lunga di %s\n", string1, string2);
} else if (result < 0) {
printf("%s è più lunga di %s\n", string2, string1);
} else {
printf("%s e %s hanno la stessa lunghezza\n", string1, string2);
}

return 0;
}

In questo esempio, stiamo passando due stringhe alla funzione compareStringLengths, che restituisce 1 se la prima stringa è più lunga, -1 se la seconda stringa è più lunga, e 0 se hanno la stessa lunghezza.

Output:

World! è più lunga di Hello

Conclusione

Congratulazioni! Hai appena migliorato le tue abilità di programmazione in C imparando come passare array alle funzioni. Ricorda, la pratica fa perfezione, quindi non esitare a sperimentare questi concetti nei tuoi programmi.

Ecco una tabella di riepilogo dei metodi che abbiamo coperto:

Metodo Descrizione
Passaggio Array con Chiamata per Valore Passa l'indirizzo del primo elemento
Passaggio Array con Chiamata per Riferimento Sempre passato per riferimento in C
Passaggio di Array Bidimensionale Richiede specificare le dimensioni nel parametro della funzione
Passaggio di Stringhe Può essere utilizzato per manipolare o confrontare stringhe

Continua a programmare, continua a imparare, e, soprattutto, divertiti! ??

Credits: Image by storyset