Les tableaux
Eléments contigus de même type déclaration: type nom[taille];
int t[N];
double cosinus[360];
avec initialisation:
char vowel[6]={‘a’,’e’,’i’,’o’,’u’,’y’};
la taille devient optionnelle:
char* name[]={« Smith », »Doe », »X »};
Taille
-un tableau ne connaît pas sa taille
– l’opérateur sizeof ne marche que pour les tableaux dont la taille est connue à la compilation
3 solutions:
– connaître la taille grâce à une constante
– passer la taille en paramètre
– utiliser un élément marqueur comme le » pour les chaînes
Tableaux à n dimensions
int t[100][16][45];
chaque t[i][j] est un tableau de 45 int quand on passe un tableau à une fonction, on doit mettre toutes les dimensions sauf la première…
Tableaux a n dimensions
#define N 15000
char t[N][N];
int main(int argc,char* argv[]) {
int i,j;
time_t before=time(0);
for (i=0;i<N;i++) {
for (j=0;j<N;j++) {
t[i][j]=1;
}
}
time_t middle=time(0);
printf(« %d seconds\n »,middle-before) for (j=0;j<N;j++) {
for (i=0;i<N;i++) {
t[i][j]=1;
}
}
time_t end=time(0);
printf(« %d seconds\n »,end-middle);
return 0;
}
Les fonctions
une fonction a un prototype:
un nom
des paramètres
un type de retour
exemple de définition:
float average(int t[]) {
float sum=0;
int i;
for (i=0;i<N;i++) {
sum=sum+t[i];
}
return sum/N;
}
Définition vs déclaration
définition = code de la fonction
déclaration = juste son prototype avec ;
dans les .h
dans un .c pour une
fonction qu’on ne veut
pas exporter
void get_hen(void);
void get_egg(void) {
/* … */
get_hen();
/* … */
}
void get_hen(void) {
/* … */
get_egg();
/* … */
}
return
renvoie une valeur si retour ≠ void
inutile seulement en fin de fonction void:
void print_sum(float a,float b) {
printf(« %f+%f=%f\n »,a,b,a+b);
}
int print_sum2(float a,float b) {
printf(« %f+%f=%f\n »,a,b,a+b);
}
$>gcc -Wall -ansi function.c
function.c: In function `print_sum2′:
function.c:25: warning: control reaches end of non-void function
…
Cours langage C (296 KO) (Cours PDF)