À propos du pointeur non initialisé en langage C et du pointeur nul

Le pointeur p est défini et initialisé en même temps, afin qu'il puisse fonctionner normalement, le code est le suivant:

#include <stdio.h>
int main()
{
    
    
    int a;
    int *p=&a;
    scanf("%d",p);
    printf("%d",*p);
    return 0;
}

Le pointeur est initialisé à null et il ne peut pas s'exécuter normalement pour le moment. Le code est le suivant:

#include <stdio.h>
int main()
{
    
    
    int *p=NULL;
    scanf("%d",p);
    printf("%d",*p);
    return 0;
}

Il semble que les pointeurs nuls ne puissent pas non plus être utilisés.

Nouveauté 20200505
Quelques réflexions sur les pointeurs et l'allocation dynamique de la mémoire
1. La première adresse de l'espace de stockage occupé par la variable dans la mémoire est appelée l'adresse de la variable, et les données stockées dans l'espace de stockage de la variable deviennent la valeur de la variable. (Avant je n'avais pas lu attentivement cette phrase. Les adresses stockées dans la variable pointeur p sont toutes vides, comment puis-je attribuer une valeur à * p? Le skin n'a pas le sentiment d'attachement)
2. La fonction malloc () : Utilisé pour allouer plusieurs octets d'espace mémoire et renvoyer un pointeur vers la première adresse de la mémoire. Si le système ne peut pas fournir suffisamment d'espace mémoire, la fonction renverra un pointeur nul NULL
3. Continuez à utiliser la mémoire après avoir libéré la mémoire. Si la mémoire
est libérée mais continue de l'utiliser, il en résultera un pointeur sauvage.
Lorsque l'espace mémoire de la pile pointé par le pointeur est libéré, le pointeur qui pointe vers celui-ci ne meurt pas. Une fois la mémoire libérée, la valeur du pointeur ne change pas réellement. Il pointe toujours vers cette mémoire, mais les données stockées dans la mémoire devient une valeur aléatoire (brouillée) uniquement. Le résultat de la libération de la mémoire ne modifie que les données stockées dans la mémoire, faisant du contenu stocké dans la mémoire un poulet chaud, et le pointeur vers la mémoire de déchets est appelé un pointeur sauvage.
Une fois la mémoire libérée, le pointeur vers celle-ci ne deviendra pas automatiquement un pointeur nul et le pointeur sauvage n'est pas un pointeur nul

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43919570/article/details/105555298
conseillé
Classement