Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:memo-c [19/08/2014 08:49] Hypathie [Introduction] |
utilisateurs:hypathie:tutos:memo-c [19/08/2014 11:03] Hypathie [Les pointeurs] |
||
---|---|---|---|
Ligne 1236: | Ligne 1236: | ||
- | =====Les pointeurs ==== | + | =====Les pointeurs ===== |
====Définitions==== | ====Définitions==== | ||
Ligne 1347: | Ligne 1347: | ||
</note> | </note> | ||
+ | ====tableau bis ==== | ||
+ | Un tableau est pointeur qui pointe vers le premier élément du tableau. | ||
+ | ===tableau int=== | ||
+ | <code c> | ||
+ | #include<stdio.h> | ||
+ | int main(void){ | ||
+ | int tab[10]; | ||
+ | tab[0]=10; | ||
+ | tab[1]=20; | ||
+ | tab[2]=30; | ||
+ | printf("%d\t%d\t%d\n",tab[0],tab[1],tab[2]); | ||
+ | printf("%d\n",*(tab)); | ||
+ | printf("%d\n",*(tab+1)); | ||
+ | printf("%d\n",*(tab+2)); | ||
+ | printf("%d\n",*(tab+3)); | ||
+ | printf("\n"); | ||
+ | *(tab+2)=60; | ||
+ | printf("%d\n",tab[2]); | ||
+ | printf("\n"); | ||
+ | tab[2]=55; | ||
+ | printf("%d\n",*(tab+2)); | ||
+ | printf("%d\n",tab[2]); | ||
+ | } | ||
+ | </code> | ||
+ | <code> | ||
+ | 10 20 30 | ||
+ | 10 | ||
+ | 20 | ||
+ | 30 | ||
+ | 0 | ||
+ | |||
+ | 60 | ||
+ | |||
+ | 55 | ||
+ | |||
+ | </code> | ||
+ | |||
+ | >**''*tab''** : ce qui est pointé par tab | ||
+ | >**''tab[0]''** : premier élément du tableau | ||
+ | >**'' *(tab+2)''** et **''tab[2]''** ont la même valeur, on peut modifier la valeur par le biais de **''tab[2]''** ou de **'' *(tab+2)''**. | ||
+ | >**''*(tab+1)''** : premier élément du tableau + 4 octets (entier sur 4 octets), c'est-à-dire valeur du deuxième élément du tableau (le premier est ''tab[0]'' ou ''*(tab+0)'' ) | ||
+ | >**''*(tab+2)''** : premier élément du tableau + 8 octets, c'est-à-dire valeur du troisième élément du tableau. | ||
+ | > etc. | ||
+ | ===tableau char=== | ||
+ | |||
+ | <code c> | ||
+ | #include<stdio.h> | ||
+ | int main(void){ | ||
+ | char tab[27]; | ||
+ | tab[0]='a'; | ||
+ | tab[1]='b'; | ||
+ | tab[3]='c'; | ||
+ | tab[4]='d'; | ||
+ | tab[5]='e'; | ||
+ | tab[6]='f'; | ||
+ | tab[7]='g'; | ||
+ | tab[8]='h'; | ||
+ | tab[9]='i'; | ||
+ | tab[10]='j'; | ||
+ | tab[11]='k'; | ||
+ | tab[12]='l'; | ||
+ | tab[13]='m'; | ||
+ | tab[14]='n'; | ||
+ | tab[15]='o'; | ||
+ | tab[16]='p'; | ||
+ | tab[17]='q'; | ||
+ | tab[18]='r'; | ||
+ | tab[19]='s'; | ||
+ | tab[20]='t'; | ||
+ | tab[21]='u'; | ||
+ | tab[22]='v'; | ||
+ | tab[23]='w'; | ||
+ | tab[24]='x'; | ||
+ | tab[26]='y'; | ||
+ | tab[27]='z'; | ||
+ | printf("%c\t %c\t %c\t %c\t %c\t %c\n",tab[0],tab[5],tab[9],tab[15],tab[21],tab[26]); | ||
+ | *(tab+0)='A'; | ||
+ | tab[5]='E'; | ||
+ | printf("%c\t %c\n",tab[0],*(tab+5)); | ||
+ | } | ||
+ | </code> | ||
+ | <code> | ||
+ | a e i o u y | ||
+ | A E | ||
+ | </code> | ||
+ | |||
+ | * Idem en mieux (pour mémoire dure) : | ||
+ | <code c> | ||
+ | #include<stdio.h> | ||
+ | int main(void){ | ||
+ | char tab[27]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; | ||
+ | printf("%c\t %c\t %c\t %c\t %c\t %c\n",tab[0],tab[5],tab[9],tab[15],tab[21],tab[26]); | ||
+ | *(tab+0)='A'; | ||
+ | tab[5]='E'; | ||
+ | printf("%c\t %c\n",tab[0],*(tab+5)); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | =====fonction bis ===== | ||
+ | ===Pourquoi la fonction "main" renvoie-t-elle à un "int" ? === | ||
+ | Surtout qu'elle peut contenir des "char" ! | ||
+ | Rappel : "void" : quand la fonction ne retourne rien. | ||
+ | |||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int somme(int x,int y){ | ||
+ | int result; | ||
+ | result=x+y; | ||
+ | return result; | ||
+ | } | ||
+ | int main(void){ | ||
+ | int addition; | ||
+ | addition=somme(2,3); | ||
+ | printf("%d\n",addition); | ||
+ | } | ||
+ | </code> | ||
+ | <code> | ||
+ | 5 | ||
+ | </code> | ||
+ | |||
+ | * ou en raccourci : | ||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int somme(int x,int y){ | ||
+ | int result; | ||
+ | result=x+y; | ||
+ | return result; | ||
+ | } | ||
+ | void main(void){ | ||
+ | int addition; | ||
+ | int var1=2; | ||
+ | int var2=3; | ||
+ | addition=somme(var1,var2); | ||
+ | printf("%d\n",addition); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | >On affecte la variable "addition" de la fonction "somme" car elle a un "return". | ||
+ | > On met **''int main(void){''** car il possible de faire renvoyer des choses par la fonction "main". | ||
+ | > Quand elle ne renvoie rien on peut aussi mettre **''void main(void){''**. | ||