• # Ca ne compile pas chez moi (tm)

    Posté par . En réponse au message Segmentation fault!. Évalué à 1.

    void main(void)
    main() doit renvoyer un int.
    Et, comme main() est censée renvoyer un int, on ajoute
    return 0;
    à la fin de main()pour signaler à l'OS qu'il n'y a pas de problème. Ou alors
    return EXIT_SUCCESS;
    qui a la même sémantique (et la même portabilité), mais qui a le mérite d'être plus explicite pour le relecteur (il faut un incldue standard, stdlib.h, je crois).

    Il faut régler son compilateur pour être sûr qu'on fait du vrai C. Avec gcc:
    gcc -Wall -Wextra -std=c99
    est un bon début (ou remplace c99 par c90 ou ce que tu veux, suivant tes besoins). L'option -pedantic est aussi très utile, car rajoute tous les warnings que la norme définit. Voir la doc de gcc pour plus d'infos.

    Sinon, passer l'adresse de ton Tab plutôt que Tab est inutile (passer Tab revient à donner un pointeur vers le premier élément de ton tableau, quelles que soient ses dimensions). Mais, si on sait ce qu'on fait (on passe un pointeur vers un tableau, et non un pointeur vers un élément de tableau), alors il n'y a pas de problème ;)

    PS:
    There are 2 rules of precedence. Multiply before you add and use parentheses everywhere else.


    PPS: POSIX spécifie en plus que EXIT_SUCCESS vaut 0, mais en-dehors de POSIX la valeur de la macro peut être quelconque (mais différente de EXIT_FAILURE, évidemment).