mvc open pdf in browser : Extract image from pdf c# control Library platform web page asp.net wpf web browser c10-part873

303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 101 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Variable globale accessible uniquement dans un fichier 
La variable globale de tout à l'heure était accessible dans tous les fichiers du projet. 
Il est possible de la rendre accessible uniquement dans le fichier où elle se trouve. Ca reste une variable globale quand même, mais
disons qu'elle n'est globale qu'aux fonctions de ce fichier et non à toutes les fonctions du programme. 
Pour créer une variable globale accessible uniquement dans un fichier, rajoutez juste le mot-clé static devant : 
Code : C
static long resultat = 0;
Variable static à une fonction
Si vous rajoutez le mot-clé "static" devant la déclaration d'une variable 
à l'intérieur d'une fonction, ça n'a pas le même sens que pour les
variables globales. 
En fait, la variable static n'est plus supprimée à la fin de la fonction. La prochaine fois qu'on appellera la fonction, la variable aura
conservé sa valeur. 
Par exemple : 
Code : C
long triple(long nombre)
{
static long resultat = 0// La variable resultat est créée la première fois que la
fonction est appelée
resultat = 3 * nombre;
return resultat;
} // La variable resultat n'est PAS supprimée lorsque la fonction est terminée. 
Qu'est-ce que ça signifie concrètement ? 
Qu'on pourra rappeler la fonction plus tard et la variable resultat contiendra toujours la valeur de la dernière fois. 
Voici un petit exemple pour bien comprendre : 
Code : C
long incremente();
int main(int argc, char *argv[])
{
printf("%ld\n", incremente());
printf("%ld\n", incremente());
printf("%ld\n", incremente());
printf("%ld\n", incremente());
return 0;
}
long incremente()
{
static long nombre = 0;
nombre++;
return nombre;
}
Code : Console
4
Ici, la première fois qu'on appelle la fonction incremente, la variable "nombre" est créée. 
Extract image from pdf c# - Select, copy, paste PDF images in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
extract image from pdf; extract images from pdf
Extract image from pdf c# - VB.NET PDF Image Extract Library: Select, copy, paste PDF images in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
extract image from pdf c#; extract images from pdf file
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 102 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Elle est incrémentée à 1, et une fois la fonction terminée la variable n'est pas supprimée. 
Lorsque la fonction et appelée une seconde fois, la ligne de la déclaration de variable est tout simplement "sautée". On ne recrée pas la
variable, on réutilise la variable qu'on avait déjà créée. 
Comme la variable valait 1, elle vaudra maintenant 2, puis 3, puis 4 etc... 
Ce type de variable est assez rarement utilisé, mais ça peut vous servir à l'occasion donc je tenais à vous le présenter 
Les fonctions locales à un fichier
Pour en finir avec les portées, nous allons nous intéresser à la portée des fonctions. 
Normalement, quand vous créez une fonction, celle-ci est globale à tout le programme. Elle est accessible depuis n'importe quel autre
fichier .c. 
Il se peut que vous ayez besoin de créer des fonctions qui ne seront accessibles que dans le fichier où se trouve la fonction. 
Pour faire cela, rajoutez le mot-clé static (encore lui) devant la fonction : 
Code : C
static long triple(long nombre)
{
// Instructions
}
Pensez à mettre à jour le prototype aussi : 
Code : C
static long triple(long nombre);
Et voilà ! Votre fonction "static" triple ne peut être appelée que depuis une autre fonction du même fichier (par exemple main.c). 
Si vous essayez d'appeler la fonction triple depuis une fonction d'un autre fichier (par exemple affichage.c), ça ne marchera pas car
"triple" n'y sera pas accessible 
On résume !
Portée des variables 
Une variable déclarée dans une fonction est supprimée à la fin de la fonction, elle n'est accessible que dans cette fonction.
Une variable déclarée dans une fonction avec le mot-clé static devant n'est pas supprimée à la fin de la fonction, elle conserve sa
valeur au fur et à mesure de l'exécution du programme
Une variable déclarée en-dehors des fonctions est une variable globale, accessible depuis toutes les fonctions de tous les
fichiers source du projet
Une variable globale avec le mot-clé static devant est globale uniquement dans le fichier où elle se trouve, elle n'est pas
accessible depuis les fonctions des autres fichiers.
Portée des fonctions 
Une fonction est par défaut accessible depuis tous les fichiers du projet, on peut donc l'appeler depuis n'importe quel autre
fichier.
Si on veut qu'une fonction ne soit accessible que dans le fichier où elle se trouve, il faut rajouter le mot-clé static devant.
Voilà, vous savez maintenant un peu mieux ce qu'on appelle la "programmation modulaire". 
Plutôt que de mettre tout le code de son programme dans un seul énorme fichier, on le sépare intelligemment en plusieurs fichiers. 
Il n'y a pas de "règle" qui dit comment vous devez séparer vos fonctions. Le mieux est de regrouper les fonctions ayant un même thème
dans un même fichier .c (et de faire le fichier .h correspondant qui contiendra les prototypes bien sûr !) 
Souvenez-vous de mon projet de jeu d'allumettes : il y avait un fichier pour gérer l'affichage à l'écran, un fichier pour l'IA (Intelligence
Artificielle) de l'ordinateur, etc etc. 
Nos prochains TP seront certainement séparés en plusieurs fichiers, donc essayez de vous entraîner chez vous à créer un projet utilisant
au moins un autre fichier .c que le main.c. Pour le moment, vos projets sont sûrement très petits, donc vous aurez peut-être un peu de
mal à "inventer" plein de fonctions à séparer en plusieurs fichiers : c'est normal. Mais profitez-en parce que bientôt vous aurez des
C# PDF Text Extract Library: extract text content from PDF file in
Ability to extract highlighted text out of PDF document. text extraction from PDF images and image files. Support extracting OCR text from PDF by working with
how to extract images from pdf in acrobat; how to extract text from pdf image file
C# PDF insert image Library: insert images into PDF in C#.net, ASP
C#.NET PDF SDK - Add Image to PDF Page in C#.NET. How to Insert & Add Image, Picture or Logo on PDF Page Using C#.NET. Add Image to PDF Page Using C#.NET.
extract jpg pdf; how to extract pictures from pdf files
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 103 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
fonctions de partout dans tous les sens et vous regretterez ce bon vieux temps 
A l'assaut des pointeurs
Les pointeurs. Nous y voici enfin. 
Autant vous prévenir tout de suite : ce chapitre ne sera pas une ballade de plaisance. Oh que non 
Nous sommes encore bien loin de la fin du cours de programmation, et pourtant je peux vous dire que c'est ce chapitre qui sera votre
plus grand obstacle. C'est un véritable tournant que nous allons prendre dès maintenant en découvrant ce qu'on appelle les pointeurs en
C. 
A titre purement informatif (et ce n'est pas parce que j'aime bien raconter ma vie 
), il faut savoir que, plus jeune, j'avais essayé
d'apprendre la programmation en C / C++ en lisant des livres. Quel que soit le livre, c'était toujours la même chose : arrivé au chapitre
des pointeurs, je ne comprenais plus. Je ne comprenais pas : 
Comment ça fonctionnait
A quoi ça pouvait bien servir
Aujourd'hui le temps a passé et je sais enfin de quoi il s'agit. Je sais aujourd'hui 
qu'on ne peut pas faire de programme en C sans se
servir de pointeurs. Même dans "Plus ou Moins", vous en avez utilisé sans le savoir 
Je vais faire mon maximum pour vous expliquer de ce dont il s'agit, doucement et sûrement. N'allez pas trop vite, vous pourriez vous
brûler les ailes en un temps record 
Restez attentifs et accrochez-vous : c'est maintenant ou jamais qu'il faut quadrupler d'attention. Ceux qui seront toujours en vie à la fin
de ce chapitre auront gagné un pass pour la pluie de bonnes choses qui vous attend après 
(Ca va je vous ai pas trop fait peur là ?) 
Un problème bien ennuyeux
Un des plus gros problèmes avec les pointeurs, en plus d'être assez difficiles à assimiler pour un débutant, c'est qu'on a du mal à
comprendre à quoi ça peut bien servir. 
Alors bien sûr, je pourrais vous dire : "Les pointeurs c'est totalement indispensable on s'en sert tout le temps, croyez-moi c'est super
utile !", mais je vois de là vos mines sceptiques 
Alors, afin d'éviter cela, je vais vous poser un problème 
que vous ne pourrez pas résoudre sans utiliser de pointeurs. Ce sera en quelque
sorte le fil rouge du chapitre. Nous en reparlerons à la fin de ce chapitre et verrons quelle est la solution en utilisant ce que vous aurez
appris. 
Voici le problème : je veux écrire une fonction qui renvoie 2 valeurs. 
"Impossible" me direz-vous ! 
En effet, on ne peut renvoyer qu'une valeur par fonction : 
Code : C
long fonction()
{
return machin;
}
Si on indique long, on renverra un nombre de type long (grâce à l'instruction return). 
On peut aussi écrire une fonction qui ne renvoie aucune valeur avec le mot-clé void : 
Code : C
void fonction()
{
C# Create PDF from images Library to convert Jpeg, png images to
Best and professional C# image to PDF converter SDK for Visual Studio .NET. C#.NET Example: Convert One Image to PDF in Visual C# .NET Class.
pdf image extractor online; extract image from pdf online
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
PDF Pages in C#.NET. Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others in C#.NET Program.
extract images from pdf acrobat; extract vector image from pdf
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 104 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
}
Mais renvoyer 2 valeurs à la fois... c'est pas possible. On ne peut pas faire 2 "return" ni rien. 
Alors supposons que je veuille écrire une fonction à laquelle on envoie un nombre de minutes, et celle-ci renverrait le nombre d'heures
et minutes correspondantes : 
Si on envoie 45, la fonction renvoie 0 heures et 45 minutes. 
Si on envoie 60, la fonction renvoie 1 heure et 0 minutes. 
Si on envoie 90, la fonction renvoie 1 heure et 30 minutes. 
Allez, soyons fous, tentons le coup : 
Code : C
#include <stdio.h>
#include <stdlib.h>
/* Je mets le prototype en haut. Comme c'est un tout
petit programme je ne le mets pas dans un .h, mais
en temps normal (dans un vrai programme) j'aurais placé
le prototype dans un fichier .h bien entendu ;o) */
void decoupeMinutes(long heures, long minutes);
int main(int argc, char *argv[])
{
long heures = 0, minutes = 90;
/* On a une variable minutes qui vaut 90.
Après appel de la fonction, je veux que ma variable
"heures" vaille 1 et que ma variable "minutes" vaille 30 */
decoupeMinutes(heures, minutes);
printf("%ld heures et %ld minutes", heures, minutes);
return 0;
}
void decoupeMinutes(long heures, long minutes)
{
heures = minutes / 60;  // 90 / 60 = 1
minutes = minutes % 60// 90 % 60 = 30 (rappelez-vous : modulo = reste de la division,
"90 divisés par 60 font 1, et il reste 30";)
}
Résultat : 
Code : Console
0 heures et 90 minutes
Rhaa, zut zut zut et rezut, ça n'a pas marché. Remarquez, je n'avais guère d'espoir 
Que s'est-il passé ? 
En fait, quand vous "envoyez" une variable à une fonction, une copie de la variable est réalisée. Ainsi, 
la variable heures dans la fonction
"decoupeMinutes" n'est pas la même que celle de la fonction main ! C'est juste une copie ! 
Votre fonction decoupeMinutes fait son job (d'ailleurs j'ose espérer que vous auriez su l'écrire cette fonction, y'a un bon exemple
d'utilisation de la division et du modulo 
). A l'intérieur de la fonction decoupeMinutes, la variable heures et la variable minutes valent
les bonnes valeurs : 1 et 30. 
Mais ensuite, la fonction s'arrête lorsqu'on arrive à l'accolade fermante. Comme on l'a appris dans les chapitres précédents, 
toutes les
variables créées dans une fonction sont détruites à la fin de cette fonction. Votre copie de heures et votre copie de minutes sont donc
supprimées. 
On retourne ensuite à la fonction main, dans laquelle vos variables heures et minutes valent toujours 0 et 90. Echec ! 
I : notez que, comme une fonction fait une copie des variables qu'on lui envoie, vous n'êtes pas du tout obligés d'appeler vos
C# PDF Form Data Read Library: extract form data from PDF in C#.
PDF software, it should have functions for processing text, image as well retrieve field data from PDF and how to extract and get field data from PDF in C#
how to extract images from pdf file; extract photos from pdf
VB.NET PDF Text Extract Library: extract text content from PDF
provides text extraction from PDF images and image files. Add-On, developers are able to extract target text with tutorial for extracting text from PDF using VB
how to extract images from pdf; pdf extract images
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 105 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
variables de la même façon que dans le main. Ainsi, vous pourriez très bien écrire : 
Code : C
void decoupeMinutes(long h, long m)
h pour heures et m pour minutes. 
Si vos variables ne s'appellent pas de la même façon que dans le main, ça ne pose donc aucun problème ! 
Bref, vous aurez beau retourner le problème dans tous les sens... Vous pouvez essayer de renvoyer une valeur avec la fonction (en
utilisant un return et en mettant le type long à la fonction), mais vous n'arriveriez à renvoyer qu'une des 2 valeurs. Vous ne pouvez pas
renvoyer les 2 valeurs à la fois. 
Voilà le problème est posé 
Ce n'est qu'un exemple parmi tant d'autres qui va vous montrer l'utilité des pointeurs. J'ai choisi celui-ci parce qu'il me paraissait
intéressant. 
Allez, maintenant on peut attaquer le chapitre !
La mémoire, une question d'adresse
Rappel des faits
Petit flash-back. 
Vous souvenez-vous du chapitre sur les variables ? 
Quelle que soit la réponse, je vous recommande très vivement d'aller relire la première partie de ce chapitre, intitulée "Une affaire de
mémoire". Bien entendu, je ne peux pas vous obliger à le faire, mais ne venez pas pleurnicher ensuite en me disant que vous ne
comprenez rien 
Il y avait un schéma très important dans ce chapitre, je vous le ressors pour l'occasion. C'était le schéma de la mémoire : 
VB.NET PDF insert image library: insert images into PDF in vb.net
VB.NET PDF - Add Image to PDF Page in VB.NET. Insert Image to PDF Page Using VB. Add necessary references: RasterEdge.Imaging.Basic.dll.
pdf image extractor; extract images from pdf files without using copy and paste
C# WPF PDF Viewer SDK to view, annotate, convert and print PDF in
Read: PDF Text Extract; C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to PDF; C# Protect: Add Password
pdf image text extractor; extract images pdf acrobat
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 106 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
C'est un peu comme ça qu'on peut représenter la mémoire vive (RAM) de votre ordinateur. 
Il faut lire ce schéma ligne par ligne. 
La première ligne représente la "cellule" du tout début de la mémoire vive. Chaque cellule a un numéro, c'est son adresse (hyper
important le vocabulaire là !). La mémoire comporte un grand nombre d'adresses, commençant à l'adresse numéro 0 et se terminant à
l'adresse numéro (insérez un très grand nombre ici). 
A chaque adresse, on peut stocker un nombre. 
Un et UN SEUL nombre.
On ne peut donc pas stocker 2 nombres par adresse. 
Votre mémoire n'est faite que pour stocker des nombres. Elle ne peut pas stocker de lettres, de phrases. Pour contourner ce problème,
on a inventé une table qui fait la liaison entre les nombres et les lettres. Cette table dit par exemple : "le nombre 89 représente la
lettre Y". 
Mais bon, la gestion de texte en C n'est pas encore pour tout de suite. Nous en parlerons dans quelques chapitres. Avant de pouvoir
comprendre ça, il faut d'abord comprendre ce que sont les pointeurs. 
Adresse et valeur
Revenons-y justement car c'est le sujet. 
Quand vous créez une variable "age" de type long par exemple, en tapant ça : 
Code : C
long age = 10;
... votre programme demande au système d'exploitation (Windows par exemple) la permission d'utiliser un peu de mémoire. Le système
d'exploitation répond en indiquant à quelle adresse en mémoire il vous laisse le droit d'inscrire votre nombre. 
C'est d'ailleurs justement un des rôles principaux d'un système d'exploitation : on dit qu'il alloue de la mémoire aux programmes. C'est
un peu lui le chef, il contrôle chaque programme et vérifie qu'il se sert de la mémoire à l'endroit qu'il lui a autorisé. 
C'est d'ailleurs là la cause n°1 des plantages de programmes : si votre programme essaie d'accéder à une zone de la
mémoire qui ne lui appartient pas, le système d'exploitation (abrégez "OS") refuse cela et coupe brutalement le programme en
guise de punition ("C'est qui le chef ici ?"). 
L'utilisateur, lui, voit une jolie boîte de dialogue "Ce programme va être arrêté parce qu'il a effectué une opération non
conforme" (quand c'est pas trop trop grave), ou, pire : un terrible écran-bleu-de-la-mort 
Mais généralement, si l'OS est bien codé votre ordinateur ne devrait pas complètement se bloquer à cause d'un simple
"dépassement de mémoire". Enfin, moi j'dis ça, j'dis rien 
Je m'égare. Où en étions-nous déjà ? 
Ah oui, notre variable age. La valeur 10 a été inscrite quelque part en mémoire, disons par exemple à l'adresse n°4655. 
Ce qu'il se passe (et c'est le rôle du compilateur) c'est que le mot "age" dans votre programme est remplacé par l'adresse 4655 à
l'exécution. Cela fait que, à chaque fois que vous avez tapé le mot age dans votre code source, cela est remplacé par 4655, et votre
ordinateur voit ainsi à quelle adresse il doit aller chercher en mémoire ! Du coup, l'ordinateur se rend en mémoire à l'adresse 4655 et
répond fièrement : "Ca vaut 10 !". 
On sait donc comment récupérer 
la valeur de la variable : il suffit tout bêtement de taper "age" dans son code source. Si on veut afficher
l'âge, on peut utiliser la fonction printf : 
Code : C
printf("La variable age vaut : %ld", age);
Résultat à l'écran : 
Code : Console
La variable age vaut : 10
Rien de bien nouveau jusque-là. 
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 107 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Le scoop du jour
On sait afficher la valeur de la variable, mais saviez-vous que l'on peut aussi 
afficher l'adresse correspondante ? 
... Ah oui non c'est vrai vous ne saviez pas 
Pour afficher l'adresse de la variable, on doit utiliser le symbole %p (le p du mot "pointeur") dans le printf. En outre, on doit envoyer à la
fonction printf non pas la variable age, mais son adresse... Et pour faire cela, vous devez mettre le symbole & devant la variable age,
comme je vous avais demandé de le faire pour les scanf il y a quelques temps sans vous expliquer pourquoi 
Tapez donc : 
Code : C
printf("L'adresse de la variable age est : %p", &age);
Résultat : 
Code : Console
L'adresse de la variable age est : 0023FF74
Ce que vous voyez là est l'adresse de la variable age au moment où j'ai lancé le programme sur mon ordinateur. Oui oui, c'est un
nombre. 
0023FF74 est un nombre, il est simplement écrit dans le système hexadécimal, au lieu du système décimal auquel nous avons l'habitude. 
Si vous remplacez le %p par un %ld, vous devriez obtenir le nombre en système décimal (plus compréhensible pour nous
pauvres humains). Toutefois, le %p a été fait spécialement pour afficher des adresses, donc je préfère en général l'utiliser à la
place de %ld.
Sans rentrer dans les détails, juste pour que vous soyez pas trop perturbés, sachez que le fameux système décimal représente tous les
nombres avec 10 chiffres : 0 1 2 3 4 5 6 7 8 9 
En hexadécimal (un mode dans lequel l'ordinateur travaille souvent), les nombres sont représentés avec 16 chiffres : 0 1 2 3 4 5 6 7 8 9 A
B C D E F (les lettres sont en fait des chiffres supplémentaires pour représenter les nombres). 
Tout nombre en hexadécimal peut se convertir en décimal et inversement. Ainsi, A vaut 10, B vaut 11, C vaut 12... F vaut 15, 10 vaut
16, 11 vaut 17, 12 vaut 18 et ainsi de suite. 
Si vous avez une calculatrice (au hasard la calculatrice de Windows en mode scientifique), vous pouvez convertir les nombres. 
La calculatrice de Windows peut convertir les hexadécimaux
Vous devez d'abord vous assurer que vous êtes dans le mode scientifique : Affichage / Scientifique. 
Ensuite, cliquez sur Hex (j'ai entouré en rouge sur ma capture d'écran). Tapez le nombre en hexadécimal que vous avez. Puis, cliquez sur
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 108 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Déc juste à côté pour transformer en décimal. Et voilà le travail 
Ca marche aussi en sens inverse bien sûr 
Ainsi, j'ai pu voir que 0023FF74 correspondait en fait au nombre 2359156. Bon, on s'en fout un peu, ça ne changera pas notre vie, mais 
ça fait du bien de savoir comment ça marche non ? 
Si vous exécutez ce programme sur votre ordinateur, l'adresse sera très certainement différente. Tout dépend de la place
que vous avez en mémoire, des programmes que vous avez lancés etc... Il est totalement impossible de prédire à quelle
adresse la variable sera stockée chez vous 
Si vous lancez votre programme plusieurs fois d'affilée, il se peut que l'adresse soit identique, la mémoire n'ayant pas beaucoup
changé entre temps. Si vous redémarrez votre ordinateur par contre, vous aurez sûrement une valeur différente. 
Où je veux en venir avec tout ça ? 
Eh bien en fait, je veux vous faire retenir la chose suivante toute bête : 
age : affiche la VALEUR de la variable.
&age : affiche l'ADRESSE de la variable.
Avec "age", l'ordinateur va lire la valeur de la variable en mémoire et vous renvoie cette valeur. Avec "&age", votre ordinateur vous dit
en revanche à quelle adresse se trouve la variable.
Utiliser des pointeurs
Jusqu'ici, nous avons uniquement créé des variables faites pour contenir des nombres. 
Maintenant, nous allons apprendre à créer des variables faites pour 
contenir des adresses : ce sont justement ce qu'on appelle des
pointeurs. 
Mais... Les adresses sont des nombres aussi non ? Ca revient à stocker des nombres encore et toujours !
C'est exact. Mais ces nombres auront une signification particulière : 
ils indiqueront l'adresse d'une autre variable en mémoire. 
Créer un pointeur
Pour créer une variable de type pointeur, on doit rajouter le symbole * devant le nom de la variable. 
Code : C
long *monPointeur;
Notez qu'on peut aussi écrire... 
Code : C
long* pointeurSurAge;
Cela revient exactement au même. 
Cependant, la première méthode est à préférer. En effet, si vous voulez déclarer plusieurs pointeurs sur la même ligne, vous
serez obligés de mettre l'étoile devant le nom (première méthode) : 
Code : C
long *pointeur1, *pointeur2, *pointeur3;
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 109 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Comme je vous l'ai appris, il est important d'initialiser dès le début ses variables (en leur donnant la valeur 0 par exemple). C'est encore
plus important de le faire avec les pointeurs ! 
Pour initialiser un pointeur (lui donner une valeur par défaut), on n'utilise généralement pas le nombre 0 mais le mot-clé NULL (les
majuscules sont importantes attention) : 
Code : C
long *monPointeur = NULL;
Là, vous avez un pointeur initialisé à NULL. Comme ça, vous saurez dans la suite de votre programme que votre pointeur ne contient
aucune adresse. 
Que se passe-t-il ? Ce code va réserver une case en mémoire comme si vous aviez créé une variable normale. 
Cependant, et c'est ce qui change, 
la valeur du pointeur est faite pour contenir une adresse. L'adresse... d'une autre variable. 
Pourquoi pas l'adresse de la variable age ? Vous savez maintenant comment indiquer l'adresse d'une variable au lieu de sa valeur (en
utilisant le symbole &) alors zou ! Ca nous donne : 
Code : C
long age = 10;
long *pointeurSurAge = &age;
La première ligne signifie : "Créer une variable de type long dont la valeur vaut 10" 
La deuxième ligne signifie : "Créer une variable de type pointeur dont la valeur vaut l'adresse de la variable age". 
Vous avez remarqué qu'il n'y a pas de type "pointeur" comme il y a un type "int", un type "double" ou encore un type "long". 
On n'écrit donc pas : 
Code : C
pointeur pointeurSurAge;
Au lieu de ça, on utilise le symbole *, mais on continue à écrire "long". Qu'est-ce que ça signifie ? 
En fait, (accrochez-vous), on doit indiquer quel est le type de la variable dont le pointeur va contenir l'adresse. Comme notre pointeur
pointeurSurAge va contenir l'adresse de la variable age (qui est de type long) alors mon pointeur doit être de type "long*" ! Si ma variable
age avait été de type int, alors j'aurais dû écrire "int *monPointeur". 
Vocabulaire : on dit que 
le pointeur pointeurSurAge pointe sur la variable age. 
Un petit schéma de ce qu'il se passe en mémoire : 
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 110 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Dans ce schéma, la variable age a été placée à l'adresse 177450 (vous voyez d'ailleurs que sa valeur est 10), et le pointeur
pointeurSurAge a été placé à l'adresse 3 (c'est tout à fait le fruit du hasard hein, j'invente 
). 
Lorsque mon pointeur est créé, le système d'exploitation réserve une case en mémoire comme il l'a fait pour age. La différence ici, c'est
que la valeur de pointeurSurAge est un peu particulière. Regardez bien le schéma : c'est l'adresse de la variable age ! 
Ceci, mesdames et messieurs, est le secret absolu de tout programme écrit en langage C (et donc aussi en langage C++ 
). On y est,
nous venons de rentrer dans le monde merveilleux des pointeurs ! 
Ouah, super. Et ça fait quoi ton truc ?
Ca ne transforme pas encore votre ordinateur en machine à café, certes. 
Seulement maintenant, on a un pointeurSurAge qui contient l'adresse de la variable age. 
Essayons de voir ce que contient le pointeur en faisant un printf dessus : 
Code : C
long age = 10;
long *pointeurSurAge = &age;
printf("%ld", pointeurSurAge);
Documents you may be interested
Documents you may be interested