Posez votre question Signaler

Pointeurs en langages c [Résolu]

aqwxc - Dernière réponse le 28 mai 2008 à 14:20
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..
Lire la suite 

Pointeurs en langages c »

6 réponses
Réponse
+0
moins plus
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
alicia85- 28 mai 2008 à 11:45
bonjr t es la j ai un pb en langage c stp merci
Ajouter un commentaire
Réponse
+0
moins plus
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
alicia85- 28 mai 2008 à 12:20
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
Char Snipeur- 28 mai 2008 à 14:13
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
Ajouter un commentaire
Réponse
+0
moins plus
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();
}
Ajouter un commentaire
Ce document intitulé « pointeurs en langages c » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?