Apprendre à saisir C++ pointeurs (4 / 6 étapes)

Étape 4: Utilisation des pointeurs

PASSAGE DES ARGUMENTS D’UNE FONCTION

Il existe deux façons de passer des arguments à une fonction : soit par valeur ou par référence.

PASSAGE DES ARGUMENTS PAR VALEUR

Normalement, les arguments sont passés aux fonctions par valeur, ce qui signifie que c’est la valeur de la variable qui est passée à la fonction et pas la variable elle-même.

Les implications de cette apparu claires dans l’extrait suivant du code :

Sub fn (int nArg1, int nArg2)
{
modifier les valeurs des arguments
nArg1 = 10 ;
nArg2 = 20 ;
}

int main (int nNumberofArgs, char * pszArgs [])
{
initiaize deux variables et afficher leurs valeurs
int nValue1 = 1 ;
int nValue2 = 2 ;

maintenant, essayez et modifiez-les en appelant une fonction

FN (nValue1, nValue2) ;

Quelle est la valeur de nValue1 et nValue2 maintenant ?
cout de cout
System ("PAUSE")
return 0 ;

}

Ce programme déclare deux variables, nValue1 et nValue2, les initialise à une valeur connue et passe ensuite leurs valeurs à une fonction (fn). Cette fonction modifie la valeur de ses arguments et retourne simplement.

Question : Quelle est la valeur de nValue1 et de nValue2 en main () après que le contrôle est retourné de fn () ?

Réponse : La valeur de nValue1 et nValue2 demeure inchangée à 1 et 2, respectivement.

Pour comprendre pourquoi, examiner soigneusement comment C++ gère la mémoire dans l’appel à fn (). C++ stocke les variables locales (comme nValue1 et nValue2) dans une zone spéciale de mémoire appelée la pile. Dès l’entrée en fonction, les figures de C++ comment beaucoup la fonction de mémoire de pile, il faudra et puis réserve ce montant. Disons, pour du raisonnement, que, dans cet exemple, la mémoire de pile taillée pour main () commence à l’emplacement 0 x 1000 et s’étend jusqu'à 0x101F. Dans ce cas, nValue1 est peut-être à l’emplacement 0 x 1000, et le nValue2 pourrait être à l’emplacement 0x1004.

(REMARQUE : SI VOUS UTILISEZ CODE::BLOCKS, UN INT OCCUPE 4 OCTETS.)

Dans le cadre de l’appel à (fn), C++, tout d’abord stocke les valeurs de chaque argument dans la pile à partir de l’argument de l’extrême droite et son chemin vers la gauche.

La dernière chose que C++ stocke dans le cadre de l’appel est l’adresse de retour afin que la fonction sait où une fois que c’est terminé.

Pour des raisons qui doivent faire davantage avec le fonctionnement interne du processeur, la pile « pousse vers le bas », ce qui signifie que la mémoire utilisée par fn () aura adresses plus petit que 0 x 1000.

N’oubliez pas qu’il s’agit d’une possible mise en page de mémoire. Je ne sais pas (ou soins) que l’un d'entre eux sont en fait les adresses réelles utilisées par C++ dans ceci ou n’importe quel autre appel de fonction.

La fonction fn (int, int) contient deux instructions :

nArg1 = 10 ;
nArg2 = 20 ;

Le point principal de dire c’est de démontrer le fait que la modification des valeurs de nArg1 et nArg2 n’a aucun effet sur les variables d’originales retour à nValue1 et nValue2.

PASSAGE DES ARGUMENTS PAR RÉFÉRENCE

Je voulais donc que se passe-t-il si les modifications apportées par la fn () permanente ? Je pourrais le faire en passant pas la valeur des variables mais leur adresse. Cela est démontré par l’extrait suivant du code :

Sub fn (int * pnArg1, int * pnArg2)
{
modifier la valeur des arguments
* pnArg1 = 10 ;
* pnArg2 = 20 ;
}

int main (int nNumberofArgs, char * pszArgs [])
{
initialiser les deux variables et afficher leurs valeurs
int nValue1 = 1 ;
int nValue2 = 2 ;

FN (& nValue1, & nValue2) ;

System ("PAUSE")
return 0 ;
}

Notez tout d’abord que les arguments de fn () sont maintenant déclarées non entiers, mais des pointeurs vers des entiers. L’appel à la fn (int *, int *) ne passe pas la valeur des adresses variables nValue1 et nValue2 mais theie.

En utilisant les pointeurs, les modifications apportées aux deux variables deviennent permanentes. Sans utiliser les pointeurs, les modifications sont uniquement apportées aux valeurs copiées sur (fn).

Articles Liés

Comment apprendre Photoshop en ligne gratuit

Comment apprendre Photoshop en ligne gratuit

Une des plus populaires et les plus utilisés photo éditant le logiciel disponible en ligne pour les concepteurs et les développeurs est Photoshop. Vous ne pouvez pas imaginer la conception d'une image sans Photoshop. Pourquoi est-il si populaire ? Po
Prévisions météorologiques patères

Prévisions météorologiques patères

Lorsque vous utilisez la porte que j'oublie souvent de vérifier mon téléphone pour la prévision. J'ai hâte de prendre une décision et finissent capturé sous la pluie ou au pansement pendant l'après-midi chaud. Avec les crochets de prévision, la météo
Apprendre Motion avec Light Painting

Apprendre Motion avec Light Painting

Vous avez une lumière ? Vous êtes alors prêt pour le monde merveilleux de la peinture lumineuse. Peinture de lumière est une façon incroyable d'utiliser une caméra pour faire beau art et illusions. Voici juste un échantillon de quelques-unes des poss
Apprendre à jouer du Xylophone

Apprendre à jouer du Xylophone

Les informations nécessaires sont à base de solfège, mais si vous n'avez jamais joué un xylophone ou le piano avant, il serait facile pour vous de se perdre dans ce insolubles. Vous devez d'abord comprendre que les différentes notes sont présents pou
Apprendre à fixer des vieilles briques !

Apprendre à fixer des vieilles briques !

Bienvenue à compétences homme 101. Je serai votre instructeur aujourd'hui et nous apprenons à supprimer les vieilles briques et les remplacer par ceux identique ou similaire. Nous allons apprendre quelques nouvelles compétences.Étape 1: Outils et fou
Apprendre à jouer aux échecs

Apprendre à jouer aux échecs

Chess est un jeu ancien qui est devenu un des sports plus populaires dans le monde. Ici je vous guidera à travers un tutoriel sur les règles de base du jeu d'apprentissage afin que vous pouvez commencer à jouer immédiatement.Vous pouvez ramasser un j
Télescope pointeur Laser

Télescope pointeur Laser

C'est le 3ème d'une ligne de petites améliorations et tweaks pour mon petit télescope.Il s'agit de mon stand de pointeur laser. Initialement, j'étais va rendre un peu plus compact et montez-le côte à côte avec mon chercheur, mais une fois de plus êtr
Apprendre à jouer de la guitare en 10 heures!!!!

Apprendre à jouer de la guitare en 10 heures!!!!

Ce message est pour toute personne qui a pensé à ramasser à la guitare, mais n'a pas encore. Pour ceux d'entre vous qui n'êtes pas musiciens, devenant l'un est plus ludique et plus facile que vous imaginez. Je vous écris ce message dans l'espoir que
Apprendre à souder

Apprendre à souder

Un ami a exprimé un intérêt pour apprendre à souder. Je vous écris pour donner une introduction à la soudure pour des gens comme lui. C'est aussi un endroit pour cataloguer des choses très utiles nécessitant un peu de temps et de la lecture pour moi
Comment être créatif et apprendre à vivre plus longtemps

Comment être créatif et apprendre à vivre plus longtemps

Tout le monde est créatif à leur manière, mais sans le vouloir, nous pouvons limiter notre créativité. Il est possible d'aller au-delà de nos limites auto-imposée et devenir plus créatif. Une bonne partie de la créativité consiste à voir les relation
Le monde Puzzle - comment apprendre à votre pays le plaisir façon. (découpe laser) par Samuel Bernier

Le monde Puzzle - comment apprendre à votre pays le plaisir façon. (découpe laser) par Samuel Bernier

avez-vous déjà vu une de ces vidéos où un journaliste interviewe les étudiants et les adultes, leur demandant à l'Iran de point dehors sur une carte ? Le résultat est souvent drôle, et alors est-ce jeu. Plus d'une centaine de pays, certains d'entre e
Comment apprendre à votre chien quelques trucs importants (et certains pas tellement plus importants)

Comment apprendre à votre chien quelques trucs importants (et certains pas tellement plus importants)

tout le monde aime leurs animaux de compagnie. Si vous avez un chien, chat, cobaye serpent, que ce soit, vous aimez cet animal. Quelque chose qui est important pour tous les animaux pouvoir faire répond à une commande (ou faire des tours). Ces comman
COMMENT APPRENDRE LE DESSIN ! UNCONVENTIONAL façon de dessiner des choses, c’est facile et serviable.

COMMENT APPRENDRE LE DESSIN ! UNCONVENTIONAL façon de dessiner des choses, c’est facile et serviable.

Pour ceux qui aiment le dessin et l'art ! et même jamais essayé de tirer toute chose cuz il pense qu'il ont jamais n'importe quel talent ! Cette instructable pourrait être votre premier pas en tant qu'artiste !J'ai commencé à apprendre le dessin il y
Apprendre à tambour

Apprendre à tambour

Tambour est une forme d'art très agréable. Toutefois, si vous voulez bien jouer, il faut de pratique et la coordination. Au-dessous de sont quelques étapes pour vous aider a commencé !Etape 1: Acheter pilons & une batterie et/ou Drum SetAcheter une p