ADDR |
Adresse |
---|---|
Sun Pascal |
Syntaxe
function addr(x:variable):pointer; |
Paramètres
Nom | Description |
---|---|
x | Ce paramètre permet d'indiquer le nom de la variable dont on veut connaître l'adresse. Le paramètre x est soit une variable, une chaîne de caractères constante, une fonction ou une procédure. |
Retour
La valeur de retour de la fonction addr est l'adresse dans laquelle la variable ou une chaîne de caractères constante est entreposée. Pour les paramètres de fonction ou de procédure, la fonction addr renvoie l'adresse de départ de la fonction ou de la procédure. Dans chaque cas, la fonction addr renvoie une valeur de type univ_ptr.
Description
Cette fonction retourne le pointeur d'une adresse de variable.
Remarques
- Le Sun Pascal vous permet d'appliquer la fonction addr à une variable, une fonction ou une procédure avec une étendue dynamique telle que des variables locales et des fonctions ou procédures imbriquées. Vous devez faire preuve de prudence en le faisant, puis déréférencer la valeur de pointeur résultante. Dans le cas de variables locales, le déréférencement de ces pointeurs en dehors de la portée dans laquelle la variable est active entraînera une valeur vide de sens. Le compilateur transmet un lien statique aux fonctions et procédures imbriquées lorsqu'il les appelle. Le compilateur ne génère pas ce lien lors du déréférencement de valeurs de pointeur vers des procédures ou des fonctions. Par conséquent, le Sun Pascal génère un avertissement si le paramètre de la fonction addr est l'un de ces objets. La fonction addr ne peut pas être appliqué aux champs d'agrégats alignés sur les bits.
- Si vous utilisez la fonction addr(), n'utilisez pas le paramètre de compilation -H. Le paramètre de compilation -H garantit que tous les pointeurs utilisés pointent dans le tas.
Exemple
L'exemple suivant permet d'afficher le contenu et l'adresse de variable :
- program addr_sample(output);
- const
- name = 'Gladir';
- type
- ptr = ^ integer;
- ptr_char = ^ alfa;
- var
- ptr_address: ptr;
- ptr_address_char: ptr_char;
- x: integer;
- y: integer;
- c: alfa;
- begin
- x := maxint;
- ptr_address := addr(x);
- y := ptr_address^;
- writeln('L''adresse de x est ', ptr_address: 3, '.');
- writeln('Le contenu de x est ', y: 3, '.');
- ptr_address_char := addr(name);
- c := ptr_address_char^;
- writeln('L''adresse de c est ', ptr_address_char: 3, '.');
- writeln('Le contenu de c est ', c: 4, '.');
- end.
En supposant que vous avez sauvegarder le programme Sun Pascal sous le nom de «addr.p», Ensuite, vous tapez en ligne de commande :
pc addr.p a.out |
Vous obtenir un résultat semblable à ceci :
L'adresse de x est 38764.Le contenu de x est 2147483647.
L'adresse de c est 33060.
Le contenu de c est Gladir.
Dernière mise à jour : Lundi, le 7 septembre 2015