Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Come una normale funzione C il main puo ricevere degli argomenti (quando fai un programma C e lo lanci da riga di comando poi dargli dei parametri es: mioProg parametro1)
argc da il numero di argomenti che gli passi al main, mentre argv è un vettore di stringhe che identifica proprio gli argomenti
(es MioProg parametro1 parametro 2) restituisce :
argc = 3 (occhio che conta come parametro anche MioProg)
il tipo ritornato deve essere un intero, se alla fine della funzione metto return 0 allora vuol dire che è tutto ok, altrimenti vorrà dire che qualcosa è andato storto, giusto?
Dimenticavo di scrivere che allo stesso modo
char ** argv è diverso da char *argv[]
Anche in questo caso la seconda dichiarazione equivale allo scrivere
const char ** argv;
Può sembrare una precisazione da poco,
ma provare ad assegnare un valore ad un puntatore costante
genera un immediato segmentation fault, e non è una cosa simpatica
passare una serata cercando di capire quale puntatore è andato a quel paese !
Non vorrei errare, ma in C non puoi asseganre strnghe in quetso modo, devi usare x forza funzioni che lo fanno, e per quanto so io scrivere *pippo o pippo[] è la stessa cosa.. Nella dichiarazione è uguale
homer84 ha scritto:Metti anche quello che vuoi, tanto il valore di ritorno del main non ti interessa praticamente mai, per quello dico che è inutile metterlo
Quindi lo stato di uscita un programma non è piú importante? O__O
return 0 si mette, main è una funzione è deve dare qualcosa...
homer84 ha scritto:Dipende da che programma devi fare, io siceramente x quelle cose universitarie che faccio non mi è MAI stato richiesto di metterci un return al main
Ok, ma fa parte del buon programmare... Se ad esempio ho bisogno di integrare un mio script con il tuo programma mi trovo in difficoltá, perchè mi dará un exit status inaspettato.
> cat foo.c
#include <stdio.h>
int main(void) {
puts("ciao");
}
> cc -Wall foo.c
foo.c: In function `main':
foo.c:4: warning: control reaches end of non-void function