Illustre la différence entre les références de pointeur de C

Tout d'abord, la base des pointeurs de compréhension, un indice important 5 étoiles

Composé d'une variable: adresse de la variable, les noms de variables, les valeurs des variables

L'int i = 10
Insérer ici l'image Description

En second lieu, Pointer

2.1 Qu'est-ce que

Un pointeur pour stocker l'adresse en mémoire de la variable, cette variable par un pointeur indirection
Tels que: int * p; déclarer une variable de pointeur de nombre entier p, le point à une variable de type int

Exemple de code
variable pointeur de mise en œuvre p au point i

int i= 10;
int *p; //声明一个整型指针变量p
p=&i;//将i的地址赋给指针变量p

p = & i, le & pris comme adresses, l'adresse de la prise variable i

Illustre le code
parce que la variable pointeur lui - même est une variable, adresse de la variable là, les noms de variables, les valeurs des variables
Insérer ici l'image Description
peuvent être vus de la figure variable pointeur valeur p est stockée à la variable i

2.2 Comment utiliser la variable manipulée de pointeur

* Utilisation de P pour représenter la valeur de la variable i est une variable, cette variable * valeur p en modifiant la variable i

Code spécifique

int i= 10;
int *p; //声明一个整型指针变量p
p=&i;//将i的地址赋给指针变量p

*p=11;
cout << i << endl;//输出i=11

* Utilisation de supplément

  • int * p (* nom de type Nom de la variable): * indique un type de pointeur
  • P * (* nom variable): * indique opérateur indirection

2.3 Pourquoi utiliser un pointeur

Il y a des chaussures pour enfants peut se demander, puis le nom de la variable i modifier directement une valeur variable, et pourquoi par un pointeur
En fait, en changeant la valeur du nom variable variable, mais aussi au milieu d'adresses à visiter

L'opération suivante du point de vue de la pile

par exemple

int    *ip;    /* 一个整型的指针 */
double *dp;    /* 一个 double 型的指针 */
float  *fp;    /* 一个浮点型的指针 */
char   *ch;    /* 一个字符型的指针 */

Pointeur ip variable, dp, fp, ch un espace mémoire généralement quatre octets, toutes les valeurs de pointeur de type de données réelles, est une longue adresse représentative de la mémoire hexadécimal.

Fonctionnant sur le pointeur de la pile est inférieure à la mémoire réelle occupée par la course variable dans le pointeur de pile peut économiser de l'espace lorsque les grands paramètres de transmission peuvent enregistrer le temps passé, il peut être plus rapide, et l'espace de la pile est très faible précieux, il est impossible d'aller dans la grande compression des données.

En troisième lieu, la référence

3.1 Qu'est-ce qu'une référence

Une référence variable est un alias, l'équivalent de la deuxième nom d'une variable
références opération, il est équivalent à des variables d'exploitation

Formulaire de soumission

  • Défini par référence à & boot: le nom de référence & type = nom de variable;

Par exemple: Heroes LOL Union ne nomme pas
le nom de référence de type = et nom de la variable,
jeu & LOL = League;

3.2 Un exemple simple, cité

Démontré: i est un alias ir, ir est équivalente à l'opération de l'opération de l'i

#include<isotream.h>
void main()
{
	int i =9;
	int &ir =i;
	cout<<"i="<<i<<"  "<<"ir="<<ir<<endl;//i=9  ir=9
	
	ir=20;//改变ir的值
	cout<<"i="<<i<<"  "<<"ir="<<ir<<endl;//i=20  ir=20

    cout<<"i的地址是:"<<&i<<endl;//i的地址是:0x0012FF34
    cout<<"ir的地址是:"<<&ir<<endl;//ir的地址是:0x0012FF34
}

codes graphiques
Insérer ici l'image Description
Ir opération est équivalente à l'opération de l'i

3.3 Notez l'utilisation de points de référence

  • (1) ne peuvent pas être établies les références citées
  • (2) ne peut pas être établi tableau de références, les références de tableau ne peut pas être mis en place
  • (3) une référence de pointeur peut être établi, ne peut pas être mis en place est un pointeur vers la

code description

int i=0,a[10];
int &&ii=i;  //错误,ii是引用的引用
int &&aa=a;  //错误,aa是数组的引用
int &*ip=i;  //错误,ip是指向引用的指针

int *pi=&i;
int *&pr=pi; //正确,pr是指针的引用

Quatrièmement, la différence entre les pointeurs et les références

Pourquoi C ++ 4.1 d'introduire des références

En fait, en substance, il est d'ajouter des contraintes de pointeur de référence, d'améliorer les lacunes pointeur cité

Irrégularités pointer à 4,2

  1. pointeur null exploitation: un pointeur est attribué à la 0
  2. pointeur sauvage Opération: un pointeur non initialisé
  3. Sans le savoir modifié la valeur du pointeur, puis je pensais que le pointeur normal .

4.3 améliorer le pointeur de référence

  1. Référence doit être initialisé (pour veiller à ce qu'aucun pointeur sauvage)
  2. L'initialisation est l'alias pour une variable existante (pour faire en sorte que pas un pointeur NULL)
  3. Une référence au point toujours à l'objet de son initialisation (valeur de garantie pointeur inchangé).

Les liens de référence

Il a publié 198 articles originaux · louange gagné 94 · vues 90000 +

Je suppose que tu aimes

Origine blog.csdn.net/shang_0122/article/details/104755481
conseillé
Classement