Que signifie & en langage C ?
En langage C & peut être utilisé comme opérateur "ET au niveau du bit" ou "prise d'adresse". L'opérateur ET au niveau du bit est également un opérateur binaire, et sa fonction est de correspondre aux deux nombres. impliqué dans l'opération. Le ET binaire de , et l'opérateur d'adresse est un opérateur unaire, qui définira le résultat de l'opération à l'adresse de l'opérande de droite.
L'opérateur ET bit à bit
consiste à ET les nombres binaires selon les bits correspondants pour obtenir un nouveau nombre binaire. 1 et 0 valent 0 ; 1 et 1 valent 1 ; 0 et 0 valent 0.
s'analyse comme suit :
est la somme de chaque bit du système binaire.
Par exemple : 1010 0011& 0000 1111, le résultat est 0000 0011. C'est-à-dire que choisir 0 équivaut à remettre ce chiffre à 0, et choisir 1 équivaut à conserver ce bit.
prend l'adresse de l'opérateur
pour L'opérateur & dans le langage C est défini comme : (&p) est une opération qui renvoie l'adresse ouverte lorsque p a été déclaré mais d'après mon observation du code, j'estime que l'opérateur & n'est pas simplement une fonction de retour du code ; adresse;
Par exemple :
int a = 1; //假设a的地址是0x7dfe88 int *p = (int *)0x7dfe88; int num = 1; int *p1 = #
Ce qui précède est un code simple pour attribuer des valeurs aux pointeurs p et p1 est une simple adresse hexadécimale, mais elle doit être ajoutée lorsque l'adresse. est converti en pointeur. Forcer la conversion (int *) ; si la conversion n'est pas effectuée, le compilateur émettra un avertissement (avertissement C4047 : "Initialisation" : "int *" et "int" ont des niveaux d'indirection différents mais quand) ; utiliser l'opérateur & pour obtenir l'adresse Cependant, il peut être compilé et transmis sans aucune conversion forcée, ce qui montre que l'opérateur & n'est en aucun cas aussi simple que d'obtenir une adresse. Le fonctionnement de l'opérateur d'affectation "=" est de droite. à gauche, ce qui montre que le côté droit de "=" est également un pointeur. Nous supposons donc ici que l'opérateur & extraira l'adresse de num et générera un pointeur temporaire basé sur le type de num.
Sur la base de l'hypothèse, écrivez le code suivant pour vérifier :
int num = 1; double *p1 = #
En conséquence, le compilateur a signalé l'erreur "avertissement C4133 : "Initialisation" : incompatibilité de type de "int *" à "double *"" . Il y a donc une part de vérité dans mon hypothèse.
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!