Pointeurs en langages c

Résolu
aqwxc -  
alicia85 Messages postés 75 Statut Membre -
Bonjour,
On m' a dit que en langage c *(p++) revient au meme que *p

pourtant *(p++) rend la valeur pointe par le pointeur (p++)
alors que *p renvoye la valeur pointe par le pointeur p

Merci de m'aider..
Configuration: Linux Fedora
Firefox 1.5.0.6

3 réponses

  1. vlmath Messages postés 833 Statut Contributeur 160
     
    Salut,

    a ben non, clairement pas ... Le mec qui t'as dis ça ne doit pas avoir un compilateur à jour dans la tête ... lol

    Tu as tout a fais raison, *p++ c'est pas la même chose que *p (t'es pas obligé de mettres les () ).

    @Bientôt
    0
    1. alicia85 Messages postés 75 Statut Membre
       
      bonjr t es la j ai un pb en langage c stp merci
      0
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Salut
    je serai plus nuancé. Je dirai oui et non.
    En C, *(p++) est équivalent à *p en ce qui concerne le résultat de la ligne. En revanche, après la ligne p sera incrémenter de 1. En revanche *(++p) est complètement différent de *p.
    Pour s'en convaincre, voici un petit programme :
    #include <stdio.h>
    int main()
    {
        char *c=(char*)malloc(2),*D;
        c[0]='a';c[1]='b';
        D=c;// on fait pointé D sur le premier caractère de c
        printf("%c %c\n",*(D++),*D);
        D=c; // réinitialisation de D
        printf("%c %c\n",*(++D),*D);
        return 0;
    }
    la sortie sera alors :
    a a
    b b
    --
    Salutation ! avant je croyais, maintenant je suis fixé.Jésus Christ
    Char Snipeur
    0
    1. alicia85 Messages postés 75 Statut Membre
       
      bonjour a toi pourra tu m'aider ? j ai un pb avec mon tp peux tu m aider sur l'allocation en memoire .a l'execution on m'envoie des messages d'erreur .comme quoi erreur de segmentation merci
      0
      1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331 > alicia85 Messages postés 75 Statut Membre
         
        Si tu veux de l'aide, écris déjà un message correctement.
        erreur de segmentation veux dire 9 fois sur 10 que tu li dans un tableau en dehors de la taille allouée
        0
  3. alicia85 Messages postés 75 Statut Membre
     
    stp voici une parti de mon code je ne sais ce qui se passe
    char*sh,*type,*c,c1;
    int i,j,k,l,v,n;
    printf("\t u:pour les entiers non signés\n\t d:pour les entiers decimaux signe a cplment a 2 \n\t b:pour les entiers decimaux signes cplmen a 1\n\t f:pour les flottants\n\t l:pour les flottants avec exposant biaise\n\t s:pour les chaines de caractere\n\t c pour les caracteres\n\n");
    printf("\n ...pour le decodage taper 1....pour quitter taper 2\n");
    scanf("%d",&n);
    if(n==1){
    type=(char*)malloc(sizeof(char));
    c=(char*)malloc(sizeof(char));
    sh=(char*)malloc(sizeof(char));
    printf("\t ENTRER VOTRE TYPE:");
    do
    scanf("%s",&type);
    while(strlen(type)==2);
    printf("\nENTRER VOTRE CHAINE ");
    do{
    scanf("%s",&sh); k++;
    }
    while ((i<strlen(type))&&((sh[k]==0)||(sh[k]==1)));
    //printf("la chaine est %s",sh);
    if(type=="u"){
    l=sizeof(unsigned int)*8;
    v=verif (sh,l);
    printf("alors la %d",v);
    if(v==1){
    i=decode_int(sh);
    printf("le code est %d\n:",i);
    }
    printf("erreur dans le code");
    }
    else
    if(type=="b"){
    l=sizeof(int)*8;
    v=verif (sh,l);
    if(v==1){
    c=decode_cpl1(sh);
    printf("le code est %s\n:",c);
    }
    printf("erreur dans le code");
    }
    else
    if(type="d"){
    l=sizeof(unsigned int)*8;
    v=verif (sh,l);
    printf("je suis %d",v);
    if(v==1){
    c=decode_cpl2(sh);
    printf("le code est %s\n:",c);
    }
    printf("erreur dans le code");
    }
    else
    if (type=="c"){
    l=sizeof(char)*8;
    v=verif (sh,l);
    if(v==1){
    c1=decode_char(sh);
    printf("le code est %c\n:",c1);
    }
    printf("erreur dans le code");
    }
    else
    if (type=="s")
    {v=verif_char(sh);
    if(v==1){
    c=decode_chaine(sh);
    printf("le code est %s\n:",c);
    }
    printf("erreur dans le code");
    }
    return 1;
    }
    exit(0);
    getch();
    getch();
    }
    0