Programme 1:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x=1,y=5,*pt1,*pt2;
pt1=&x;
*pt1=2;
pt1=&y;
*pt1=3;
pt2=pt1+1;
printf("adresse de x en hexa:%p \n celle de y:%p \n pt1 contient: %p"
"\n adresse de pt1:%p \n pt2 contient: %p \n adresse de pt2:%p",
&x,&y,pt1,&pt1,pt2,&pt2);
printf("\n taille d'une variable pointeur dans ma machine:%d",sizeof(pt1));
return 0;
}
Programme 2:
#include <stdio.h>
#include <stdlib.h>
#define MAX 7
//Ne pas changer la valeur de MAX
int tab[MAX];
int main(){
int *ptr,i,val;
//tab unidim
val=0;
ptr=tab; *ptr=(val+=10);
ptr++; *ptr=(val+=10);
ptr=&tab[3]; ptr--; *ptr=(val+=10);
ptr=tab+3; *ptr=(val+=10);
ptr=tab; *(ptr+4)=(val+=10);
ptr[5]=(val+=10); *(tab+6)=(val+=10);
printf("\n Tableau :\n");
for(i=0;i<MAX;i++)printf("\t %d",tab[i]);
return 0;
}
Programme 3:
#include <stdio.h>
#include <stdlib.h>
#define MAX 7
//Ne pas changer la valeur de MAX
int mat[2][MAX];
int main(){
int *ptr,i,j,val,*ptrDebutMat;
//tab bidim
val=0;
ptr=ptrDebutMat=(int*)mat;
*ptr=(val+=10);
ptr++; *ptr=(val+=10);
ptr=&mat[0][3]; ptr--; *ptr=(val+=10);
ptr=ptrDebutMat+3; *ptr=(val+=10);
ptr=ptrDebutMat; *(ptr+4)=(val+=10);
ptr[5]=(val+=10);
*(ptrDebutMat+6)=(val+=10); //On est arrive au bord de la 1iere ligne ...
*(ptrDebutMat+MAX)=(val+=10); //Mais ceci est permis. Why?
for(j=8;j<2*MAX;j++)*(ptrDebutMat+j)=(val+=10);
printf("\n Matrice :\n");
for(i=0;i<2;i++){
for(j=0;j<MAX;j++){
printf("\t %4d",mat[i][j]);
}
printf("\n");
}
return 0;
}
Programme 4: Je n'ai pas eu le temps de l'ajouter. Executer puis comprendre comment il fait ce qu'il fait.
#include <stdio.h>
#include <stdlib.h>
void permut(int**,int**);
int x=1,y=5,*pt1=&x,*pt2=&y;
int main()
{
printf("\nAvant permut : *pt1=%d et *pt2=%d",*pt1,*pt2);
permut(&pt1,&pt2);
printf("\nApres permut : *pt1=%d et *pt2=%d",*pt1,*pt2);
return 0;
}
void permut(int **ptr1,int **ptr2){
int *ptr;
ptr=*ptr1;*ptr1=*ptr2;*ptr2=ptr;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x=1,y=5,*pt1,*pt2;
pt1=&x;
*pt1=2;
pt1=&y;
*pt1=3;
pt2=pt1+1;
printf("adresse de x en hexa:%p \n celle de y:%p \n pt1 contient: %p"
"\n adresse de pt1:%p \n pt2 contient: %p \n adresse de pt2:%p",
&x,&y,pt1,&pt1,pt2,&pt2);
printf("\n taille d'une variable pointeur dans ma machine:%d",sizeof(pt1));
return 0;
}
Programme 2:
#include <stdio.h>
#include <stdlib.h>
#define MAX 7
//Ne pas changer la valeur de MAX
int tab[MAX];
int main(){
int *ptr,i,val;
//tab unidim
val=0;
ptr=tab; *ptr=(val+=10);
ptr++; *ptr=(val+=10);
ptr=&tab[3]; ptr--; *ptr=(val+=10);
ptr=tab+3; *ptr=(val+=10);
ptr=tab; *(ptr+4)=(val+=10);
ptr[5]=(val+=10); *(tab+6)=(val+=10);
printf("\n Tableau :\n");
for(i=0;i<MAX;i++)printf("\t %d",tab[i]);
return 0;
}
Programme 3:
#include <stdio.h>
#include <stdlib.h>
#define MAX 7
//Ne pas changer la valeur de MAX
int mat[2][MAX];
int main(){
int *ptr,i,j,val,*ptrDebutMat;
//tab bidim
val=0;
ptr=ptrDebutMat=(int*)mat;
*ptr=(val+=10);
ptr++; *ptr=(val+=10);
ptr=&mat[0][3]; ptr--; *ptr=(val+=10);
ptr=ptrDebutMat+3; *ptr=(val+=10);
ptr=ptrDebutMat; *(ptr+4)=(val+=10);
ptr[5]=(val+=10);
*(ptrDebutMat+6)=(val+=10); //On est arrive au bord de la 1iere ligne ...
*(ptrDebutMat+MAX)=(val+=10); //Mais ceci est permis. Why?
for(j=8;j<2*MAX;j++)*(ptrDebutMat+j)=(val+=10);
printf("\n Matrice :\n");
for(i=0;i<2;i++){
for(j=0;j<MAX;j++){
printf("\t %4d",mat[i][j]);
}
printf("\n");
}
return 0;
}
Programme 4: Je n'ai pas eu le temps de l'ajouter. Executer puis comprendre comment il fait ce qu'il fait.
#include <stdio.h>
#include <stdlib.h>
void permut(int**,int**);
int x=1,y=5,*pt1=&x,*pt2=&y;
int main()
{
printf("\nAvant permut : *pt1=%d et *pt2=%d",*pt1,*pt2);
permut(&pt1,&pt2);
printf("\nApres permut : *pt1=%d et *pt2=%d",*pt1,*pt2);
return 0;
}
void permut(int **ptr1,int **ptr2){
int *ptr;
ptr=*ptr1;*ptr1=*ptr2;*ptr2=ptr;
}
No comments:
Post a Comment
Note: only a member of this blog may post a comment.