Directement de l'attribution des valeurs de C les Pointeurs

J'ai juste commencé à apprendre le C et j'ai été en cours d'exécution de certains programmes simples en utilisant MinGW pour Windows afin de comprendre comment les pointeurs de travail. J'ai essayé le suivant:

#include <stdio.h>

int main(){
    int *ptr;
    *ptr = 20;
    printf("%d", *ptr);
    return 0;
}

qui a compilé correctement mais quand je lance l'exécutable ne fonctionne pas - la valeur n'est pas imprimé à la ligne de commande, je reçois un message d'erreur qui dit que le .fichier exe a cessé de fonctionner.

Cependant, quand j'ai essayé de stocker la valeur dans une variable int et affecter *ptr à l'adresse mémoire de la variable, comme indiqué ci-dessous:

#include <stdio.h>

int main(){
    int *ptr;
    int q = 50;
    ptr = &q;
    printf("%d", *ptr);
    return 0;
}

il fonctionne très bien.

Ma question est, pourquoi suis-je incapable de régler directement une valeur littérale du pointeur? J'ai regardé des tutoriels en ligne pour les pointeurs et la plupart d'entre eux de la même manière que le deuxième exemple.

Toute aide est appréciée.

Cause que le pointeur n'est pas initialisé - c'est peut-point pour à peu près partout et pourrait faire planter le programme.
Tu as de la chance qu'il termine par une erreur.
est droit. Dans le code réel, ce genre de bug tend à conduire à une semaine de sessions de débogage à essayer de comprendre pourquoi une autre variable change de manière aléatoire à chaque fois dans un certain temps (jamais quand vous êtes en fait de tests de dépistage pour elle, toujours, quand vous êtes en train de faire une démonstration publique) ou des failles de sécurité où quelqu'un met la "is_admin" drapeau de vrai en manipulant des valeurs différentes.
Le titre de cette question, "Directement de l'attribution des valeurs de Pointeurs C" est un peu trompeur. Tout le problème est que vous ne pas affecter une valeur à l'aide du pointeur.

OriginalL'auteur Shreya Srinivas | 2013-07-15