jul38 > Il est important de noter la grande interchangeabilité entre les notations pointeurs/tableaux.
Qu´est ce que le nom d´un tableau ?
Ca n´est rien de plus qu´un pointeur constant verson premier élément, ainsi :
Pour int table[10];
table == &[0]
Soit l´addresse de l´élément d´indice 0.
Et donc :
La déréférenciation de table produit le m^émé résultat que table[0].
Pour obtenir table[1], tu peux aussi faire : *(table+1).
Tu verra ca plus tard dans le chapitre sur l´arithmétique des pointeurs.
Pourquoi je dis tout ca ?
Tout simplement parce que de nombreuse fonctions en font usage et aussi parce que c´est utile en allocation dynamique de mémoire.
Maintenant quel est l´avantage des pointeurs ( un truc que je voyais pas au début ) ?
Par exemple, les fonctions manipulant des chaines de caractères employent souvent en paramètre des char *parametre, quand tu manipules des tableaux de char : il suffit donc de ne passer que le nom du tableau.
Pouvoir éviter une surcharge du à la copie d´objets ou de structures : en effet quand tu passes une structure à une fonction, celle-ci est passée par valeur, donc copiée intégralement, ce qui n´est pas le cas en passant juste son addresse dans un pointeur pour y avoir accès directement par la déréférenciation : c´est donc moins couteux en mémoire et plus rapide.
( note : il eiste également les références, mais tu abordera peut être plus tard )
Cela permet de faire de l´allocation dynamique de mémoire : tu peux ainsi manipuler des données de taille non fixe au cours du temps : imagine un tableau qui contient 10 éléments, puis que tu peux modifier pour en contenir 20, etc. C´est un gros avantage des pointeurs.
Cela permet d´accéder à des périphériques ou à des zones de méoires sspécifiques : buffers écran par exmple.
Cela permet la mise en place de listes chainée, de structure d´arbres et est la base de l´orientation objet du C++.
Sinon pour l´histoire de nombre aléatoire :
Sit tu veux un nombre compris entre 1 et 100, fait :
- include < stdlib.h>
int main( void )
{
srand(); / / Permet la randomisation. Ne l´appelle qu´une seule fois !
int nombre = 1+rand()%100;
return 0;
}
Pour apprendre les bases du C ( parce que tout le language, j´ai pas fini
) , compte environs 1 an en travaillant normalement, moins si tu t´y mets vraiment à fond. Au début on patauge, mais c´est un mode de conception à acquérir.
S´il existe des livres sur la SDL ?
Pas à ma connaissance en francais, cependant tu trouvera de nombreux tutos sur :
http://prografix.games-creators.org 