Notes de révision du pointeur de langage C

À propos du pointeur de langage C (une brève discussion)

  • Introduction du problème:

    J'ai récemment rencontré un problème avec les pointeurs lorsque j'apprenais à connaître la mémoire partagée, et j'étais confus. Cela montre également que sa propre connaissance n'est pas solide. Par conséquent, j'ai repris le manuel de première année, examiné les pointeurs du langage C et écrit ce blog pour faciliter la révision future et aider d'autres amis qui ont les mêmes problèmes que moi.

  • Source de connaissances:

    1. "Programmation en langage C" - Tan Haoqiang
    2. "C Primer Plus" Sixième édition

  • L'importance des pointeurs : si vous ne maîtrisez pas les pointeurs, vous ne maîtriserez pas l'essence de C
  • Qu'est-ce qu'un pointeur: un pointeur est une adresse

  • Programme: ( Ce programme est cité comme le concept ci-dessous )

      1. #include<stdio.h>
      2. int main(){
      3.	 int a,b;
      4.   int *pointer\_a,*pointer\_b;
      5.   a=100;b=10
      6.   pointer\_a=&a;
      7.   pointer\_b=&b;
      8.   printf("a=%d,b=%d\n",a,b);
      9.   printf("\*pointer\_a=%d,\*pointer\_b=%d\n",*pointer\_a,*pointer\_b);
      10. 
      11. 
      12. return 0;
      13. }
    

1. Comment définir un pointeur

类型 * 指针变量名(*:表示该变量类型是指针变量)
  • Par exemple:

    int * pointeur;

  • Précautions:

    1. Affectation des variables de pointeur

    pointer\_a=&a;pointer\_b=&b; (✔)
    *pointer\_a=&a;*pointer\_b=&b;(×)

    Le pointeur est l'adresse, donc la variable pointeur ne peut contenir que l'adresse, et pour a et b, l'adresse est & a, & b.

    La mauvaise façon est d'écrire a (* pointer_a) = & a, b (* pointer_b) = & b .

    Si vous voulez éviter une mauvaise écriture, vous pouvez initialiser lorsque vous définissez le pointeur: int * pointer_a = & a, * pointer_b = & b;

    2. Le type de base doit être spécifié

    Raison: Le nombre d'octets occupés par différents types de données dans la mémoire n'est pas le même.

    pointer_a ++; (ajouter 4 à la valeur d'adresse (sizeof (int) = 4))

    3. L'affectation à la variable pointeur doit être du même type de données

    float a;
    int *pointer;
    pointer=&a;(×)

    4. Seules les adresses peuvent être stockées dans des variables de pointeur

    * pointeur = 100; (×)

2. Comment référencer des variables de pointeur

  • Concentrer

      &:取地址运算符。
      *:指针运算符(间接运算符)。*p是指针变量p指向的对象的值
    

(1) Attribuez une valeur à la variable pointeur:

p=&a;  指针变量p的值是变量a的地址,即p指向a;
*p=1;  等同于a=1;
printf("%d\n",*P);
printf("%o\n",p);输出a的地址

(2) Exemples d'utilisation de variables de pointeur:

1. #include<stdio.h>
2. int main(){
3.     int *p1,*p2,*p,a,b;
4.     scanf("%d,%d",&a,&b);
5.     p1=&a,p2=&b;
6.     if(a<b){
7.     p=p1;p1=p2;p2=p;
8.     }
9.     printf("a=%d,b=%d\n",a,b);
10.     printf("max=%d,min=%d\n",*p1,*p2);   
11.  return 0;
12. }

3. Chaînes, tableaux de caractères, variables de pointeur

-Graphique de caractères

Il n'y a pas de type de chaîne réel dans le langage C, et un tableau de caractères peut être utilisé pour représenter une chaîne car ses adresses d'élément sont continues.

char str [10] = {"bonjour le monde"};

Le langage C stipule que le tableau représente la première adresse de l'emplacement mémoire où se trouve le tableau, et est également l'adresse de str [0], c'est-à-dire str = & str [0];

而printf("%s",str); 为什么用首地址就可以输出字符串。。

L'essence d'une constante de chaîne en langage C est en fait une adresse! ! !

Source: https://blog.csdn.net/liusicheng2008_liu/article/details/80412586

                 L'originalité n'est pas facile, veuillez soutenir et échanger, et progresser ensemble! ! !

                             17/11/2019 15:06:59

Je suppose que tu aimes

Origine blog.csdn.net/HG0724/article/details/103185723
conseillé
Classement