Maison >Problème commun >Quelle est la différence entre *p+1 et *(p+1)
La différence est : 1. *p représente le contenu stocké dans l'adresse mémoire pointée par ce pointeur, p représente le nom d'une variable de pointeur ; 2. *p est généralement une variable ou une constante cohérente avec le type de pointeur, et p génère un nombre hexadécimal ; 3. *p indique au programme d'accéder à cette adresse pour récupérer des données, et p stocke l'adresse.
L'environnement d'exploitation de ce tutoriel : système Windows 7, version C++17, ordinateur Dell G3.
En langage C, *p et p sont couramment utilisés dans les pointeurs pour représenter une variable de pointeur. La différence entre *p et p :
1 Les significations sont différentes
*p représente le contenu stocké dans l'adresse mémoire pointée. par ce pointeur.
p représente le nom d'une variable pointeur, qui fait référence à l'adresse mémoire pointée par la variable pointeur.
2. Le format de sortie est différent
*p est généralement une variable ou une constante cohérente avec le type de pointeur.
p génère un nombre hexadécimal et affiche l'adresse d'un pointeur.
3. Différentes fonctions
*p consiste à laisser le programme se rendre à cette adresse pour récupérer des données.
p stocke l'adresse.
Exemples :
1,
int a[5]={1,2,3,4,5}; int *p=a;//这是在定义指针变量p的同时就直接给它初始化,即把数组a的首地址赋给它。
2,
int a[5]={1,2,3,4,5}; int *p;//声明指针变量p p = a;
L'opération Informations étendues
(*p) est une opération qui renvoie la valeur de p comme valeur de l'espace d'adressage. (&p) est une opération qui renvoie l'adresse ouverte lorsque p a été déclaré. Vous pouvez utiliser des instructions d'affectation pour attribuer des valeurs aux adresses mémoire.
Exemple :
int *p; p=2003H; *p=3000H
Résultat :
**p=*(*(p))=*(*(2003H))=*(3000H)=3000H。 &&p=&(&(p))=&(3001H),此时出错了,3001H 是个常数无法存放地址。 *&p=*(&(p))=*(3001H)=2003H,也就是*&p=p。
Tutoriel recommandé : "C#"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!