59. Les chaînes de caractères (2) 0 2 3 4 5 1 char aString [6] -> aString[3] v #include <string.h> void main() { char aString[6]= "hello" ; aString[0]=‘h’; aString[1]=‘e’; ... strcpy(aString, "hello" ); } o l l e h
60.
61.
62.
63.
64.
65.
66.
67.
68. Structures : Imbrication struct Date { int jour,mois,annee; }; struct Etudiant { char nom[50]; char prenom[50]; int age; struct Date dateInscription; }; int main() { struct Etudiant toto; toto.dateInscription.jour=1; return 0; }
69. Tableaux de structures struct Etudiant { char nom[50]; char prenom[50]; int age; }; int main() { struct Etudiant gtr1[50]; gtr1[0].age=19; return 0; }
70.
71.
72.
73.
74.
75. Représentation en mémoire Mémoire 18971 18979 18994 19002 18986 18984 int a; int* pointeurSurA; a=5; pointeurSurA=&a; 18994 5 pointeurSurA a
76.
77.
78.
79. Exemples (2) int main(int argc, char* argv[]) { int a,b; int* pointeurSurA; pointeurSurA=&a; b=a+1; /* ou b=*pointeurSurA+1 */ a=b*4; /* ou *pointeurSurA=b*4; a++; /* ou (*pointeurSurA)++; }
80.
81.
82.
83. Tableaux et pointeurs : Adressage int tableau[100]; int* pointeurSurInt; pointeurSurInt=tableau; /* ou pointeurSurInt=&tableau[0]; */ for (i=0;i<100;i++) tableau[i]=0; /* ou *(pointeurSurInt+i)=0; */ while (pointeurSurInt!=&tableau[99]) { *pointeurSurInt=0; pointeurSurInt++; } int tableau[100]; int* pointeurSurInt; pointeurSurInt=tableau; /* ou pointeurSurInt=&tableau[0]; */
84.
85. Tableaux et pointeurs : Allocation dynamique int main(int argc, char* argv[]) { int* tableau; int nombreCases; nombreCases=atoi(argv[1]); tableau=(int*)malloc(nombreCases*sizeof(int)); free(tableau); }
exemple du grep : tant qu’il y une ligne si cette ligne contient le modèle l’afficher
Exemples de fonctions --------------------- int max(int a,int b) /* fonction avec 2 args en mode in */ { int maxAB; /* maxAB n'est definie que dans max */ if(a>b) { maxAB=a; } else { maxAB=b; } return(maxAB); /* retour obligatoire de la fonction du meme type que max */ } Exemples de procedures ---------------------- void impNumero(int num) /* procedure d'affichage d'un entier */ { printf(&quot;%d\\n&quot;,num); } /* PAS de return */ void dessineCarre(int x,int y, int cote) { ... /* dessine un carre a l'ecran */ } void echange(int *a, int *b) /* procedure d'echange des valeurs de deux variables (mode inout) */ { int temp; /* temp n'est definie que dans echange */ temp=*a; /* on utilise * pour acceder a la valeur */ *a=*b; /* on utilise * pour modifier la valeur */ *b=temp; }