Entra

View Full Version : Cosa significa (int argc, char** argv)?


ambuotiz
28-05-2005, 10:56
Ho un programma scritto in C e lo devo importare in Java usando le JNI. Il metodo main del programma in C è main(int argc, char**argv), cosa significa?

Hero
28-05-2005, 11:08
Ho un programma scritto in C e lo devo importare in Java usando le JNI. Il metodo main del programma in C è main(int argc, char**argv), cosa significa?


dal basso della mia conoscenza di C
argc è il numero di parametri passati come argomento al programma
mentre **argv e l'array contente questi parametri (dove argv[0] è il nome del proframma stesso)

Ziosilvio
28-05-2005, 11:22
La risposta di Hero è giusta, però necessita di un ampliamento.

Anzitutto, la definizione di main in C è
int main(int argc, char *argv[])
mentre quella in Java è:
public static void main(String[] args)
Il valore dell'argomento argc della main C corrisponde al valore del campo args.length della main Java, aumentato di 1 perché in Java il nome della classe non conta come argomento, e in C il nome del programma conta.
Di conseguenza, il campo args[i] della main Java corrisponde all'argomento argv[i+1] della main C.

Per fare un esempio, se hai una classe Java echo.class che ti riproduce il funzionamento del comando UNIX echo, allora:
java echo Hello World
riproduce esattamente il funzionamento del comando UNIX:
echo Hello World
Nella main di echo, argc ha valore 3 e argv è il vettore {"echo", "Hello", "World"}.
Nella main di echo.class, args.length vale 2, args[0] è un oggetto String che rappresenta la stringa "Hello", e args[1] è un oggetto String che rappresenta la stringa "World".