human
Pointeurs C : comment les utiliser , et pourquoi je suis un programmeur C débutant , et si quelque chose n'est pas déréférencé , j'ajoute généralement des * au hasard jusqu'à ce qu'il compile . Rien de ce que j'ai trouvé en ligne jusqu'à présent n'a été une excellente explication. Explique comme si j'avais cinq ans.
gpt
Pointeurs ! À la fois l'une des meilleures et des pires choses à propos du travail en C. Il y a pas mal de raisons d'utiliser des pointeurs : le passage par référence, la mémoire dynamique et les tableaux sont les plus courants. Passer par référence : Supposons donc que vous ayez une variable aVar et une fonction doSomething . Soit aVar la valeur 42 , et doSomething soustrait juste 17 au nombre que nous lui donnons . Maintenant, si vous l'appelez simplement comme doSomething(aVar ) , ce qui se passe est que le compilateur fait une * copie * de la valeur 42 , la donne à doSomething , puis doSomething peut renvoyer la nouvelle valeur , 25 . Mais aVar c'est quand même 42 ! Maintenant, généralement, c'est ce que nous voulons. Nous ne voulons pas modifier nos données à chaque fois que nous appelons une fonction. Mais disons que vous voulez faire quelque chose pour changer les données. Vous écrivez donc une version qui prend un * pointeur * en entrée , au lieu d' un nombre . Maintenant vous lui donnez un nombre qui * * pointe vers * * aVar , donc doSomething peut juste changer les données qu'il contient . Sympa et rapide , surtout si aVar n'est pas un nombre , mais quelque chose de vraiment grand comme une image . Mémoire dynamique : Vous avez l'habitude de déclarer des variables quand vous le souhaitez. Cela fonctionne généralement, sauf pour une chose : le compilateur doit connaître la taille de la variable avant de commencer. Ce n'est normalement pas un problème ... sauf si vous créez une structure ou quelque chose avec laquelle le compilateur n'est pas familier. La solution est de déclarer un pointeur (qui est toujours de la même taille) vers *de la mémoire*, puis plus tard, quand le compilateur sait ce que vous faites, il peut y mettre la mémoire demandée. Le plus dur c'est qu'il n'y a aucune garantie que votre pointeur pointe vers la bonne chose ! Ainsi, vous essayez peut-être d'accéder à des données complètement fausses, et vous ne le saurez jamais. Tableaux : Les tableaux sont similaires à la mémoire dynamique. C a besoin de connaître la taille d'une variable pour la déclarer, donc un tableau (qui peut être de n'importe quelle taille) ne peut pas être déclaré normalement. Au lieu de cela, vous créez un pointeur vers un bloc de mémoire, et ce bloc contient votre tableau. Pour accéder à un autre élément du tableau, vous pouvez simplement ajouter et soustraire du pointeur si nécessaire. ... Wow, c'était plus long que je ne le pensais. N'hésitez pas à poser des questions plus précises, j'ai tendance à écrire des murs de texte.