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
Un pointeur C contient l'adresse d'une autre variable. * signifie obtenir la valeur de la variable pointée vers . & signifie obtenir l'adresse de la variable. Exemple : int monTableau[100 ] ; int * myArrayPointer = & myArray[5 ] . myArrayPointer pointe désormais vers la 5e place de myArray . Vous pouvez ensuite utiliser myArrayPointer = myArrayPointer + 3 ; Et myArrayPointer pointera alors vers la 8ème place de myArray . Vous l'utilisez principalement lorsque vous souhaitez créer des variables à la volée. Par exemple. entier * x ; tandis que ( 1 ) { X = malloc(sizeof(int ) ); } Cela créera une quantité infinie de variables pour vous. C'est à dire. Crash lorsque votre ordinateur manque de mémoire. Malloc alloue de l'espace pour une nouvelle variable et prend la taille en octets de la mémoire que vous souhaitez allouer à votre nouvelle variable. Un exemple plus utile est une liste chaînée . Peu importe la taille de votre tableau. Dites char a[10000 ] , vous pouvez toujours avoir besoin d'y stocker plus d'éléments lorsque votre programme est en cours d'exécution . struct myLinkedListNode { char myCharacter ; myLinkedListNode * suivant ; } Chaque fois que vous obtenez un nouveau personnage, vous pouvez créer un nouveau nœud de liste liée avec malloc et définir la valeur suivante de votre nœud de liste liée précédent sur le nouveau. Par conséquent, vous pouvez stocker n'importe quel nombre de caractères sans réclamer la mémoire lorsque le programme démarre pour la première fois. Pour obtenir la liste des caractères, commencez par le premier nœud de liste chaînée que vous avez créé et suivez les pointeurs suivants le long de la liste. Sans pointeurs, cela ne serait pas possible.