./a.out Enter a no 10 Segmentation fault
6 Réponses :
Vous devez affecter la mémoire à ce pointeur.
int *ip = malloc(sizeof(int)); // do stuff with ip free(ip); //free the memory allocated
@N 1.1 C'est un excellent lien grâce à la publication du lien ici.
Vous n'avez pas alloué de stockage, seul un pointeur. Le pointeur a besoin de quelque chose à pointer. Vous devriez le faire comme ceci: J'ai également pris la liberté de faire la déclaration de ou si vous voulez une allocation de tas plutôt que de la répartition de la pile: P> principale () code> valide et renvoyer une valeur. P> Si vous voulez en savoir plus sur les pointeurs, essayez comme ceci: p> #include <stdio.h>
#include <stdlib.h>
int main(void)
{
int* ip;
ip = malloc(sizeof(int));
printf("Enter a no \n");
scanf("%d", ip);
printf("*ip=%d", *ip);
free(ip);
return 0;
}
Hefferman no non je n'essaye pas de le tester comme vous l'avez mentionné. Je suis juste en train de tenter de comprendre comment puis-je stocker quelque chose quand je déclare quelque chose en tant que pointeur que ce n'est qu'un petit programme que j'essaie de travailler.
Vous devez allouer la mémoire.
int i; scanf(%d, &i);
Non, vous avez tort, IP n'est pas un pointeur entier. Le type em> ip est le pointeur entier, c'est-à-dire ce que vous attribuez à la propriété intellectuelle devrait être un pointeur entier. Mais vous n'avez rien attribué à IP. Alors, où vous attendez-vous que Scanf stocke la valeur entière? P>
Voici une seule façon de le réparer:
#include<stdio.h>
int main () {
int* ip = malloc(sizeof int);
printf("Enter a no \n");
scanf("%d", ip);
printf("ip=%d", *ip);
}
La solution de David Heffernan est vraie. Cependant, si vous souhaitez utiliser un pointeur (pour savoir comment fonctionner un pointeur), vous devez allouer manuellement la variable avec "MALLOC".
int *ip;
Oui, vous avez raison, j'essaie de comprendre comment fonctionne le pointeur.