Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110

    [C] - problema puntatori e passaggio di valori a funzione

    devo passare dei puntatori ad una funzione e non capisco perche' mi dia un problema.
    La situazione e' la seguente

    char *string[]={"Ar","Cc","c"};
    int occurrences[3];

    ho poi una funzione dichiarata come

    void myFunc(char *string[], int *occurrences)

    all'interno di tale funzione ho una printf che funziona benissimo
    for i...
    printf("%s %d\n",string[i],occurrences[i]);

    il problema nasce quando voglio passare string[i],occurrences[i] ad una funzione

    se all'interno del for precedente che ricordo si trova all'interno della funzione myFunc faccio una chiamata alla funzione come funcScema(string[i], occurrences[i])

    int funcScema(stringchar *string[], int *occurrences)
    {
    printf("%s %d",string[i], occurrences[i]);
    }

    dove funcScema e' dichiarata come
    int funcScema(stringchar *string[], int *occurrences)

    sembra non gradire.
    perche'?

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    posta l'errore..

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [C] - problema puntatori e passaggio di valori a funzione

    Originariamente inviato da earp_
    il problema nasce quando voglio passare string[i],occurrences[i] ad una funzione
    Beh intanto dovresti specificare bene che cosa vuoi passare:

    I valori degli elementi i-esimi? Gli indirizzi degli elementi i-esimi? Gli indirizzi originali degli array? (passando poi anche l'indice, se ti serve)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    con la printf per esempio ottengo
    Cc 8
    a me interessa passare il valore degli elementi i-esimi

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da earp_
    a me interessa passare il valore degli elementi i-esimi
    Allora string[i] è un char* e occurrences[i] è un int
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    ho cosi' dichiarato:

    prototipo:
    int funScema(char *strings[], int occurrences);

    all'interno di myFunc
    for i....
    printf("%s -> %d\n", strings[i], occurrences[i]-1);
    countMolecule(strings[i],occurrences[i]-1); //1

    e infine
    int funScema(char *strings[], int occurrences)
    {
    int i;
    printf("COUNT %s -> %d\n", strings[i], occurrences[i]-1); //2

    return 1;
    }

    gli errori riportati sono:
    per la //1
    warning: passing argument 1 of ‘countMolecule’ from incompatible pointer type
    per la //2
    error: subscripted value is neither array nor pointer

    motivo?

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da earp_
    motivo?
    Mi sembra di aver detto che l'espressione string[i] come tipo è un char*
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    non tui seguo
    se cambio il prototipo e la funzione da
    int funScema(char *strings[], int occurrences);
    in
    int funScema(char *strings[i], int occurrences);
    ho diversi errori come:

    count.c:20: error: ‘i’ undeclared here (not in a function)
    count.c: In function ‘myFunc’:
    count.c:123: error: type of formal parameter 1 is incomplete
    count.c: At top level:
    count.c:143: error: ‘i’ undeclared here (not in a function)
    count.c: In function ‘funScema’:
    count.c:146: error: subscripted value is neither array nor pointer

    se poi metto i come globale ho un warning per

    funScema(*strings[i],occurrences[i]);
    dicente
    warning: passing argument 1 of ‘funScema’ makes pointer from integer without a cast
    e un errore per
    printf("COUNT %s -> %d\n", strings[i], occurrences[i]-1);
    error: subscripted value is neither array nor pointer

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da earp_
    non tui seguo
    codice:
    int funScema(char *str, int occ)
    {
        printf("COUNT %s -> %d\n", str, occ-1);
        ....
    }
    in myFunc:

    funScema (string[i], occurrences[i]);

    non vedo la difficoltà.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    già
    ...tks

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.