Significato doppio *

di il
8 risposte

Significato doppio *

Che significa anteporre due ** prima di una stringa? cosa comporta?
int main(int argc, char**argv) {

8 Risposte

  • Re: Significato doppio *

    Hai mai studiato i puntatori?
  • Re: Significato doppio *

    Char* vuol dire puntatore a char, serve a dichiarare stringhe di lunghezza non prefissata.
    char** è un puntatore a puntatore a char, serve a fare array di stringhe. L'argomento argc contiene il numero di stringhe passate al programma come parametro.
    Ad esempio se lanci in tuo programma da riga di comando così:
    
    mioprogramma.exe pippo caio
    
    argc contiene 2, mentre con argv puoi accedere ai due parametri come faresti con un array.
    
    for(int i=0;i<argc;i++)
    	printf("%s\n", argv[i]);
    
    output
    
    pippo
    caio
    
    Però se non sai i puntatori è inutile procedere alla cieca.
  • Re: Significato doppio *

    Però se non sai i puntatori è inutile procedere alla cieca.
    Concordo ... chiedere in un forum una cosa del genere invece di studiarla nei libri, non ha senso.
  • Re: Significato doppio *

    Grazie della risposta. Sì so cosa sono i puntatori
  • Re: Significato doppio *

    Alexv ha scritto:


    Char* vuol dire puntatore a char, serve a dichiarare stringhe di lunghezza non prefissata.
    char** è un puntatore a puntatore a char, serve a fare array di stringhe. L'argomento argc contiene il numero di stringhe passate al programma come parametro.
    Ad esempio se lanci in tuo programma da riga di comando così:
    
    mioprogramma.exe pippo caio
    
    argc contiene 2, mentre con argv puoi accedere ai due parametri come faresti con un array.
    
    for(int i=0;i<argc;i++)
    	printf("%s\n", argv[i]);
    
    output
    
    pippo
    caio
    
    Però se non sai i puntatori è inutile procedere alla cieca.
    argc non contiene 3?
  • Re: Significato doppio *

    La domanda è meno banale, sia pure involontariamente, del previsto.
    Dipende se il contesto è "in generale", o per i parametri da riga di comando.
    Perchè, in questo caso, ci sono delle differenze, anche sensibili, tra Windows e Non-Windows, in particolare riguardo al passaggio di stringhe in codifica UTF-8 (per capirci per lingue quali cinese, russo, tedesco e così via)
    Lì ci andrebbe un bello spiegone
  • Re: Significato doppio *

    JosepH2OW ha scritto:


    argc non contiene 3?
    Sì è 3, c'è anche il nome dell'eseguibile
  • Re: Significato doppio *

    In effetti è così, almeno su Windows.

    https://docs.microsoft.com/en-us/cpp/cpp/main-function-command-line-args?view=msvc-160
Devi accedere o registrarti per scrivere nel forum
8 risposte