Maison >développement back-end >C++ >Analyse et comparaison des opérateurs * et & en langage C

Analyse et comparaison des opérateurs * et & en langage C

WBOY
WBOYoriginal
2024-04-03 14:24:01520parcourir

En langage C, l'opérateur astérisque (*) est utilisé pour déréférencer une variable pointeur et obtenir la valeur de la variable pointée ; l'opérateur d'adresse (&) est utilisé pour obtenir l'adresse de la variable. La comparaison spécifique est la suivante : Pointeur de déréférencement : *Obtenir l'adresse : & multiplication du pointeur : *Opération sur bits : &

Analyse et comparaison des opérateurs * et & en langage C

Analyse et comparaison des opérateurs * et & en langage C

En langage C, astérisque (* ) et l'opérateur d'adresse (&) sont deux opérateurs importants qui sont souvent utilisés pour les opérations de pointeur et la gestion de la mémoire. Cet article analysera en profondeur leurs utilisations et leurs différences, et proposera des cas pratiques pour illustrer.

Opérateur Étoile (*)

  • L'opérateur étoile est utilisé pour déréférencer une variable pointeur et obtenir la valeur de la variable vers laquelle elle pointe.
  • Syntaxe : *Variable de pointeur
  • Par exemple :

    • int *ptr = &i;
    • printf("%d", *ptr); // Imprimer la valeur de i

Opérateur d'adresse Opérateur ( &)

  • L'opérateur d'adresse est utilisé pour obtenir l'adresse d'une variable et renvoie un pointeur vers la variable.
  • Syntaxe : & nom de la variable
  • Par exemple :

    • int i = 10;
    • int *ptr = &i;
    • printf("%p", ptr); // Imprimer l'adresse de i

Opérateurs de comparaison

Ce qui suit est la comparaison des opérateurs * et & dans différents scénarios :

Opérateur Scénario Fonction
* Pointeur de déréférencement Obtenez le valeur pointant vers la variable
& Obtenir l'adresse Obtenir l'adresse de la variable
* Multiplication du pointeur Calculer la taille de l'espace mémoire pointé par le pointeur
& Opération au niveau des bits (ET logique) Effectuer une opération ET logique sur deux entiers

Cas pratique

Ce qui suit est un cas pratique qui montre comment les opérateurs * et & sont utilisés pour les opérations de pointeur :

#include <stdio.h>

int main() {
    int i = 10;
    int *ptr = &i; // ptr指向i

    // 通过解引用指针获取i的值
    printf("i的值:%d\n", *ptr);

    // 通过取地址获取i的地址
    printf("i的地址:%p\n", &i);

    // 通过指针乘法计算ptr指向的内存空间大小
    int size = sizeof(*ptr);
    printf("ptr指向内存空间大小:%d字节\n", size);

    // 使用指针进行递增
    (*ptr)++; 

    // 打印递增后的i值
    printf("递增后的i:%d\n", i);

    return 0;
}

Sortie :

i的值:10
i的地址:0x7ffe5247ef4c
ptr指向内存空间大小:4字节
递增后的i:11

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn