Gaël Thomas
char
, short
, int
,
long long
(signés par défaut, non signés si préfixés de
unsigned
)float
(4 octets), double
(8 octets)Une structure est une définition d’un nouveau type de données
Remarque: les sous-types d’une structure s’appellent des champs
Définition d’une nouvelle structure avec :
Par convention, les noms de structures commencent par une minuscule en C
n
du tableau tab
se
fait avec tab[n]
On ne peut pas accéder à la taille d’un tableau
Lors d’un accès en dehors des bornes du tableau, l’erreur est silencieuse :
c’est une erreur, mais elle n’est pas signalée immédiatement
=> parmi les erreurs les plus fréquentes (et les plus difficiles à repérer) en C
Par exemple:
int x[6] = { 1, 2, 3, 4, 5, 6 };
Comme pour les structures, on peut partiellement initialiser un tableau
int x[6] = { 1, 1, 1 };
Une chaîne de caractère est simplement un tableau de caractères
terminé par le caractère '\0'
(c’est à dire le nombre
zéro)
est équivalent à
Passage par valeur : l’argument est copiée de l’appelé vers l’appelant
=> l’argument et sa copie sont deux variables différentes
Passage par référence : une référence vers l’argument de l’appelant est donné à l’appelé
=> l’appelant et l’appelé partagent la même donnée
type nom[]
, sans la taille/* le x de f et le x du main sont deux variables distinctes */
/* le fait qu'elles aient le même nom est anecdotique */
void f(int x) {
x = 666;
printf("f : x = %d\n", x); /* f : x = 666 */
}
int main() {
int x = 42;
f(x); /* x est copié dans f */
/* => le x de main n'est donc pas modifié par f */
printf("g : x = %d\n", x); /* g : x = 42 */
return 0;
}
struct nom { type_1 champs_1; type_2 champs_2; ... };
struct nom var = { v1, v2 };
var.champs_i
int tab[] = { 1, 2, 3 };
tab[i]