Definizione di funzioni

Buongiorno

vorrei chiedere un chiarimento sulla definizione di una funzione.

Ovviamente, se il valore che ritorna la funzione è un numero intero, allora verrà definita in questa maniere:

int MyFunction() {}

...così come, se il valore che ritorna è un carattere allora scriverò:

char MyFunction() {}

........ma se la mia funzione dovesse ritornare una stringa (come array di caratteri), come la definisco?

Grazie

char* mario() {}

oppure

String bepp() {}

Una funzione in C non può ritornare un array, ma può invece ritornare un puntatore ad un array :slight_smile: ecco perchè leo ha scritto:

leo72:

char* mario() {}

oppure

String bepp() {}

l’asterisco prima del nome della funzione indica che sarà ritornato un puntatore ad un array il cui tipo è il tipo della funzione, in questo caso char.

la seconda opzione fa riferimento alla classe String specifica di arduino, qui il link: http://arduino.cc/en/Reference/StringObject

Se devi ritornare un array di caratteri, devi prima inizializzarlo fuori da ogni funzione.

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

char* stringa;

char* ritornastringa()
{
  stringa = (char*)malloc(5 + 1);
  stringa = "Hello";
  return stringa;
}

int main()
{
  printf("%s", ritornastringa());
  return 0;
}

Questo codice inizializza una stringa, poi chiama una funzione (ritornastringa()) che alloca abbastanza memoria per contenere la parola che vogliamo scriverci dentro (5 char + 1 di fine stringa), riempie quell’area di memoria con la stringa “Hello” e ne restituisce il puntatore.
Infine, la stringa viene stampata a video.

Così puoi scrivere funzioni che restituiscano stringhe :wink:

EDIT: ho aggiunto “#include <stdlib.h>” al codice, altrimenti GCC compilava lo stesso, ma dava un avvertimento :slight_smile: