Restituzione di puntatori

di il
7 risposte

Restituzione di puntatori

Salve a tutti,
avrei una domanda riguardo a questo piccolo programma di restituzione puntatori.
Il codice è questo:
#include <iostream>
using namespace std;
char *get_substr(char *sub,char *str); // anteprima della funzione

int main() {
    char *substr;
    substr = get_substr("tre","uno due tre quattro");
    cout<< "sottostringa trovata :"<< substr;
    return 0;
    
}

//restituisce un valore alla sottostringa o NULL se non la trova

char *get_substr(char *sub, char *str){
    
    int t;
    char *p, *p2, *start;
    
    for(t=0;str[t];t++){
        p=&str[t];
        start=p;
        p2=sub;
        while(*p2 && *p2==*p){
            p++;
            p2++;
        }
        // se siamo alla fine di p2 (cioè della sottostringa) allora è stata trovata una corrispondenza
        
        if(!*p2) return start; // restituisce un puntatore all'inizio della sottostringa
    }
    return 0;
    
        
        
        
}
Non capisco a cosa serva l'asterisco precedente il nome della funzione get_substr..
Potete aiutarmi?

7 Risposte

  • Re: Restituzione di puntatori

    Get_substr() ritorna un puntatore a carattere, char *
  • Re: Restituzione di puntatori

    L'asterisco "segue char" e "indica puntatore a char" ... lo leggi meglio se lo scrivi

    char *
    get_substr(char *sub, char *str)
  • Re: Restituzione di puntatori

    Grazie mille ragazzi per la risposta, ora però non ho capito a cosa serve esattamente nel programma.. riuscireste a spiegarmelo per piacere?
  • Re: Restituzione di puntatori

    Ma cosa non capisci?
  • Re: Restituzione di puntatori

    Ciao, scusa per il ritardo nella risposta, comunque non capisco come mai la funzione debba essere con un puntatore a char, perché io avrei utilizzato una funzione "normale" come per esempio: char get_substr(char *sub,char *str).Ovviamene ciò è sbagliato, ma non riesco a spiegarmi perché.
    Grazie mille per le risposte comunque.
  • Re: Restituzione di puntatori

    Se scrivi char la funzione può restituire un solo carattere. Ma dato che deve restituire una stringa lo fa tramite il puntatore al primo.
  • Re: Restituzione di puntatori

    Ah giusto! scusami, grazie mille !
Devi accedere o registrarti per scrivere nel forum
7 risposte