7
votes

Comment transmettre la valeur à un pointeur entier

./a.out 
Enter a no 
10
Segmentation fault
c

0 commentaires

6 Réponses :


1
votes

Vous devez affecter la mémoire à ce pointeur.

int *ip = malloc(sizeof(int));
// do stuff with ip

free(ip); //free the memory allocated


1 commentaires

@N 1.1 C'est un excellent lien grâce à la publication du lien ici.



6
votes

Vous n'avez pas alloué de stockage, seul un pointeur. Le pointeur a besoin de quelque chose à pointer. Vous devriez le faire comme ceci: xxx pré>

J'ai également pris la liberté de faire la déclaration de principale () code> valide et renvoyer une valeur. P> Si vous voulez en savoir plus sur les pointeurs, essayez comme ceci: p> xxx pré>

ou si vous voulez une allocation de tas plutôt que de la répartition de la pile: 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;
}


1 commentaires

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.



2
votes

Vous devez allouer la mémoire.

int i; 
scanf(%d, &i);


0 commentaires

1
votes

Non, vous avez tort, IP n'est pas un pointeur entier. Le type 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?


0 commentaires

2
votes

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);
}


0 commentaires

8
votes

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;


1 commentaires

Oui, vous avez raison, j'essaie de comprendre comment fonctionne le pointeur.