Question

C’était un entretien de placement auquel j’ai été confronté. Ils ont demandé si nous pouvons réaffecter Array, j'ai dit oui. Ensuite, ils ont demandé - alors pourquoi nous avons besoin de pointeurs alors que la plupart des gens expliquent pourquoi cela gaspille de la mémoire. Je n'ai pas pu donner de réponse satisfaisante. Si un organisme peut donner une réponse satisfaisante, je serai obligé. Veuillez mentionner toute situation dans laquelle la déclaration ci-dessus peut être contradictoire.

Merci.

Était-ce utile?

La solution

Vous pouvez uniquement réaffecter un tableau alloué dynamiquement. S'il a été alloué de manière statique, il ne peut pas être réaffecté [en toute sécurité]. *

Les pointeurs contiennent les adresses des données en mémoire. Ils peuvent être alloués, désalloués et réalloués de manière dynamique à l’aide des nouveaux opérateurs / delete en C ++ et de malloc / free en C.

Je vous suggère fortement de lire le le langage de programmation C de Kernighan et Ritchie et un texte C ++ solide du type C ++ vu du sol Up de Herbert Schildt.

L’utilisation de la mémoire dynamique, des pointeurs, des décalages, etc. sont des éléments fondamentaux de l’utilisation de ces deux langues. Ne pas savoir comment ils fonctionnent et pourquoi ils existent peut être une raison pour que des employeurs potentiels vous refusent.

* Le compilateur ne devrait pas vous permettre de réaffecter tout ce qui a été alloué de manière statique, mais s'il le fait, le comportement n'est pas défini

Autres conseils

Le phrasé est un peu étrange, mais il me semble que la question de l'entrevue était une question ouverte conçue pour vous permettre d'expliquer ce que vous savez sur les tableaux, les pointeurs, l'allocation de mémoire dynamique, etc. Si j'étais l'intervieweur I 'voudrait que le candidat articule les différences entre int * a = malloc (10 * sizeof (int)); et int a [10]; . La question suivante n’est pas très bien formulée, mais c’était probablement une tentative de pousser le candidat dans le sens de la différence entre un pointeur et un tableau et de déclencher le train de pensées.

OK Vous ne pouvez pas réallouer un tableau qui a été déclaré de manière statique. Le but d'utiliser des pointeurs (au lieu d'un tableau déclaré de manière statique) serait de vous permettre de réaffecter de l'espace. Techniquement, je suppose que vous pouvez réaffecter un tableau défini de manière statique en lui passant un pointeur, mais je ne voudrais pas le faire. Le comportement n'est pas défini si le pointeur est sur une mémoire qui n'a pas été allouée par malloc.

Je ne comprends pas vraiment comment utiliser les pointeurs "gaspille de la mémoire". La fonction realloc: -

void *realloc(void *ptr, size_t size);

prend un pointeur sur la mémoire pour le redimensionner en tant que paramètre. De plus, les pointeurs sont beaucoup plus utilisés que la mémoire dynamique, en passant par référence par exemple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top