Tag Archives: C

Les fonctions C : mieux les comprendre en langage d’assemblage

12 Mar

Les fonctions en bas niveau

Cet article est à lire en ayant devant ses yeux l’article « Pointeurs : les bases » et en se reportant à la fonction « swap » de cet article.

Nous allons illustrer plus en profondeur, mais de manière simplifiée, la notion de pile pour bien comprendre. Chaque thread s a sa propre zone de pile, qui est bien-sûr en réalité juste un bloc contiguë d’octets en mémoire dynamique, mais limité (d’où les Stack Overflow = dépassement de pile) à 8Mo sous Linux par exemple . Cependant, on la conceptualise de la manière suivante pour comprendre son fonctionnement.

Lire la suite

Chaînes de caractère (manipulation, saisie..)

7 Mar

Les chaînes de caractère

En C, aucun type ne correspond à « chaîne de caractères ». Il n’y a que des caractères de type char, stockés sur un octet (plus petite unité adressable dans la mémoire).

#include <stdio.h>

int main () {

char lettre = ‘X’;
printf (« La lettre est : %c\n », lettre);
return 1;

}

On notera que char lettre = ‘X’; équivaut à char lettre = 88;.
On sait bien-sûr que la mémoire ne stocke que des nombres (des 1 et des 0). Il a donc fallu pouvoir représenter les lettres par des nombres. Le code ASCII correspondant à la lettre X est donc 88. En mémoire, il y a donc 88 (binaire), ce qui est interprété par ‘X’ lors de l’affichage.

a) Initialisation

Pour créer une chaîne de caractères, il faut donc … créer un tableau de caractères. Ce n’est pas plus compliqué que ça.

Lire la suite

Pointeurs et tableaux : Utilisations et différences

6 Mar

Les tableaux statiques

1) Unidimensionnel

Un tableau est une structure de données particulière qui représente en fait une liste d’éléments de même type (variables, structures, …), située dans un espace contigu en mémoire. On accède à chaque élément d’un tableau grâce à un index.

On crée un tableau en renseignant le type d’élément que l’on veut y insérer et le nombre d’éléments.

#include <stdio.h>

int main () {

int tab[5];

tab[0] = 4; tab[1] = 2; tab[5] = 2; tab[3]= 3; tab[4] = 26000;

}

Lire la suite

Pointeurs (les bases)

6 Mar

Les pointeurs

1) Les variables dans la mémoire

Comme vu plus haut, le C nous permet de créer des variables typées, de les initialiser, de les assigner, de les comparer, etc.
Les principaux types de variable en C sont les entiers (short, int, long), les flottants (float, double) et les caractères (char).

Les variables sont caractérisées par leur adresse (l’emplacement mémoire où elles se situent), leur type (entier, caractère, etc.), leur taille étant décrite par le type, et leur valeur (ce qu’elles contiennent).
La mémoire vive est adressée en octets, c’est pourquoi chaque type de variable occupe un nombre entier d’octets (autrement dit, un octet = une « case mémoire »). Certains types de variable occupent 1 octet, 2, 4, mais jamais 1,5 octet par exemple.

Lire la suite