Nothing Special   »   [go: up one dir, main page]

Notes de Cours C

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 6

📎 Un pointeur est une variable qui stocke l’adresse memoire dune autre

variable
ex :

int a = 10
int *pointeur
pointeur = &a // signifie que pointeur contient l’adresse de a

si je veux accéder a la valeur de a à travers le pointeur :

J’utilise l’outil de déférencement “*” (on passe a l’objet, a ce que contient le


pointeur”
ex : int y = *pointeur // va nous donner y egal à a

On peut modifier la valeur de a avec le pointeur :

*pointeur = 20

💡 Correspondance tab[i] et pointeur :


int tab[10]; // Un tableau d'entiers
int *ptr = tab; // Un pointeur vers le premier élément de tab
(ptr + i) // Équivalent à tab[i]

Untitled 1
📎 Arithmétique des pointeurs
En C, un tableau peut être considéré comme une séquence de éléments
stockés de manière contiguë en mémoire. L'expression tab (sans
crochets) est en fait un pointeur vers le premier élément du tableau.
Lorsque vous faites tab + indice , vous calculez l'adresse d'un élément
spécifique dans ce tableau en "avançant" de indice positions à partir de
l'adresse de début du tableau.

Pourquoi utiliser tab + indice ?


Lorsque vous voulez échanger deux éléments dans un tableau, vous
devez manipuler leurs valeurs. Pour ce faire, vous avez besoin de leurs
adresses. La raison pour laquelle tab + indice est utilisé plutôt que
simplement tab[indice] est que echange a besoin des adresses des
éléments pour modifier les valeurs auxquelles ces adresses pointent. En
d'autres termes, echange ne modifie pas les adresses elles-mêmes, mais
les valeurs stockées à ces adresses

void invariant(int *tab, int taille){


for ( int indice = 1; indice < taille+1; indice++){
if (tab[indice + 1] < tab[indice]){
for(int j = indice; j >= 0 ;j-- ){
while(tab[indice + 1] < tab[j])
echange(tab + (indice + 1), tab+indice);
}
}

}
}

Bibliothèques

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h> (strlen etc..)

Untitled 2
📎 Types
printf(”%d”, i ) ; entier

%s chaine de caractere
%f réel float

%c un caractere
%lf double , meme chose que float (reel a virgule) mais avec bcp de
chiffres apres la virgule

int entier
char nom = ‘ ‘

char tab[20] tableau de type caractere pour ecrire un mot

Fonctions
strlen(chaine)

scanf(”%d”, &x);

pour elever au carré soit : nombre * nombre

soit bib : #include <math.h>


et on utilise : resultat = pow(nombre, puissance);

Fonctions équivalentes à celles de la librairie string.h, sans utiliser


cette librairie :

long_ch sera équivalente à strlen


copie_ch sera équivalente à strcpy

Pour une chaine de caractere :

char chaine[90]

fgets(chaine,sizeof(chaine), stdin)

Untitled 3
tableau d'entiers : int tab[]

Calculer la longueur de la chaine de caractère numériques

int main() {
int tab[] = {1, 2, 3, 4, 5}; // Un tableau statique d'entiers
int taille = sizeof(tab) / sizeof(tab[0]); // Calcule la taill
printf("La taille du tableau est : %d\\n", taille);
return 0;

Quand on utilise fgets ca rajoute un retour à la ligne (quand on clique sur


entrée), on doit l’enlever :

if(chaine[taille -1]== '\n'){


chaine[taille-1] ='\0';
}

// strcpy pour copier une chaine dans une autre

Bibliothèque et fonctions nombres / lettres

<ctype.h>contient des fonctions qui peuvent vérifier le type d'un caractère (par
exemple, si c'est une lettre majuscule, une lettre minuscule, un chiffre, etc.).

On y trouve :

isalpha() vérifie si un caractère est une lettre de l'alphabet

isdigit() vérifie si un caractère est un chiffre.


La bibliothèque <stdlib.h> contient des fonctions liées à la conversion, la génération
de nombres, la gestion de la mémoire, et d'autres utilitaires.

On a :

atoi() convertit une chaîne de caractères en un entier.

Untitled 4
📎 On peut créer directement un tableau :
char lettres[] = "abcdefghijklmnopqrstuvwxyz";

char chiffres[] = "0123456789";

Fonction pour remplir aléatoirement un tableau de chiffres :

void init_alea(int *tab, const int taille) {


for (int i = 0; i < taille; i++) {
tab[i] = rand() % 20;
}
}

Fonction pour concaténer des chaines de caractères

strcat est une fonction en C qui est utilisée pour concaténer (ajouter) une chaîne de
caractères à la fin d'une autre. Bibliothèque <string.h>

char *strcat(char *dest, const char *src);

dest : pointeur vers la chaîne de caractères de destination. Cette chaîne doit


avoir suffisamment d'espace pour contenir la concaténation résultante, c'est-à-
dire la longueur actuelle de dest plus la longueur de src plus le caractère nul
de terminaison.

src : pointeur vers la chaîne de caractères source qui sera ajoutée à la fin de
dest .

📎 ‘ ‘ → un seul caractère
“ ” → plusieurs caractères

💡 NULL = ‘\0’

Untitled 5
💡 Pour vérifier si tableau est vide au début de la fonction
if (dest == NULL || src == NULL) return; // Vérification de base

Code qui affiche une chaine de caractère

void print_str(const char *str) {


if (str == NULL) return; // Vérification de base
while (*str != '\\0') { // Continue jusqu'à rencontrer le cara
printf("%c", *str); // Affiche le caractère courant
str++; // Passe au caractère suivant
}
printf("\\n"); // Nouvelle ligne après la fin de la chaîne

Code qui concatène deux chaines de caractère

void cat_ch(char *dest, char *src) {


if (dest == NULL || src == NULL) return; // Vérification de ba
int a = strlen(dest); // Trouver la fin de 'dest'
int j = 0; // Compteur pour 'src'

// Copier chaque caractère de 'src' après la fin de 'dest'


while (src[j] != '\\0') {
dest[a + j] = src[j];
j++;
}
dest[a + j] = '\\0'; // Ne pas oublier le caractère nul à la f

Untitled 6

Vous aimerez peut-être aussi