Sujet résolu
L'auteur a trouvé une solution à son problème.
- Je cherche absolument des professionnels pour m'expliquer la différence entre plusieurs points
' OR '1' = '1'
il y a 8 mois
Sponsorisé
Connectez-vous pour masquer les pubs- Tout le monde travaille en Info mais personne fais du C ici
- Quel honte
- Quel honte
' OR '1' = '1'
il y a 8 mois
- Merci du Up
- Bien giclé, bien vidé
- Bien giclé, bien vidé
Bonne question — allons droit au but.
---
🧩 1. Le pointeur : un stockage d’adresse mémoire
En C, un pointeur est une variable qui contient l’adresse mémoire d’une autre variable.
int a = 42;
int *p = &a; // p contient l’adresse de a
p ne contient pas 42, mais l’adresse où est stocké 42.
Pour accéder à la valeur pointée, on déréférence : *p → donne 42.
👉 * (déréférencement) : accède à la valeur à l’adresse contenue dans le pointeur.
👉 & (adresse de) : obtient l’adresse d’une variable.
---
📦 2. Différence entre pointeur et tableau
Élément Nature Taille / Allocation Exemple
Pointeur Variable contenant une adresse Taille fixe (4 ou 8 octets) int *p; p = malloc(10 * sizeof(int));
Tableau Bloc contigu de mémoire pour plusieurs éléments Taille fixe à la compilation int t[10];
➡️ Un tableau n’est pas un pointeur, mais dans beaucoup de contextes il se comporte comme tel (car son nom “décroît” en pointeur sur son premier élément).
Exemple :
int t[3] = {1, 2, 3};
int *p = t; // ok : t est converti en pointeur sur t[0]
printf("%d", *(p+1)); // affiche 2
Mais attention :
sizeof(t) != sizeof(p);
sizeof(t) = 3 × sizeof(int)
sizeof(p) = taille d’un pointeur (4 ou 8 octets)
---
🧱 3. La structure t_list
Une struct est un type composite regroupant plusieurs champs.
Exemple :
typedef struct s_list
{
int value;
struct s_list *next;
} t_list;
Ici, t_list est un type représentant une cellule d’une liste chaînée :
value : donnée stockée
next : pointeur vers la cellule suivante
---
🪜 4. Différences selon la déclaration
Déclaration Signification
t_list lst; une structure (objet complet) de type t_list
t_list *lst; un pointeur vers une structure t_list
t_list **lst; un pointeur sur un pointeur de t_list (souvent pour modifier une liste dans une fonction)
Exemples d’usage :
t_list node; // variable simple
t_list *p = &node; // pointeur sur la variable
t_list **pp = &p; // pointeur sur le pointeur
Cas typique dans une fonction qui modifie une liste :
void add_front(t_list **lst, t_list *new)
{
new->next = *lst;
*lst = new;
}
Ici :
lst est un pointeur sur le pointeur de tête ;
on peut modifier le début de la liste à partir de la fonction.
---
🧠 En résumé
Élément Contient Exemple Usage typique
Pointeur Adresse d’une variable int *p = &a; Manipuler des variables par référence
Tableau Plusieurs valeurs contiguës int t[5]; Stocker une série fixe de données
Struct (t_list) Champs combinés (parfois chaînés) t_list node; node.next = ...; Construire des structures complexes (listes, arbres, etc.)
---
Souhaites-tu que je te fasse un schéma mémoire illustrant la différence entre t_list, *t_list, et **t_list (avec flèches et adresses) ? Ce serait très parlant visuellement.
---
🧩 1. Le pointeur : un stockage d’adresse mémoire
En C, un pointeur est une variable qui contient l’adresse mémoire d’une autre variable.
int a = 42;
int *p = &a; // p contient l’adresse de a
p ne contient pas 42, mais l’adresse où est stocké 42.
Pour accéder à la valeur pointée, on déréférence : *p → donne 42.
👉 * (déréférencement) : accède à la valeur à l’adresse contenue dans le pointeur.
👉 & (adresse de) : obtient l’adresse d’une variable.
---
📦 2. Différence entre pointeur et tableau
Élément Nature Taille / Allocation Exemple
Pointeur Variable contenant une adresse Taille fixe (4 ou 8 octets) int *p; p = malloc(10 * sizeof(int));
Tableau Bloc contigu de mémoire pour plusieurs éléments Taille fixe à la compilation int t[10];
➡️ Un tableau n’est pas un pointeur, mais dans beaucoup de contextes il se comporte comme tel (car son nom “décroît” en pointeur sur son premier élément).
Exemple :
int t[3] = {1, 2, 3};
int *p = t; // ok : t est converti en pointeur sur t[0]
printf("%d", *(p+1)); // affiche 2
Mais attention :
sizeof(t) != sizeof(p);
sizeof(t) = 3 × sizeof(int)
sizeof(p) = taille d’un pointeur (4 ou 8 octets)
---
🧱 3. La structure t_list
Une struct est un type composite regroupant plusieurs champs.
Exemple :
typedef struct s_list
{
int value;
struct s_list *next;
} t_list;
Ici, t_list est un type représentant une cellule d’une liste chaînée :
value : donnée stockée
next : pointeur vers la cellule suivante
---
🪜 4. Différences selon la déclaration
Déclaration Signification
t_list lst; une structure (objet complet) de type t_list
t_list *lst; un pointeur vers une structure t_list
t_list **lst; un pointeur sur un pointeur de t_list (souvent pour modifier une liste dans une fonction)
Exemples d’usage :
t_list node; // variable simple
t_list *p = &node; // pointeur sur la variable
t_list **pp = &p; // pointeur sur le pointeur
Cas typique dans une fonction qui modifie une liste :
void add_front(t_list **lst, t_list *new)
{
new->next = *lst;
*lst = new;
}
Ici :
lst est un pointeur sur le pointeur de tête ;
on peut modifier le début de la liste à partir de la fonction.
---
🧠 En résumé
Élément Contient Exemple Usage typique
Pointeur Adresse d’une variable int *p = &a; Manipuler des variables par référence
Tableau Plusieurs valeurs contiguës int t[5]; Stocker une série fixe de données
Struct (t_list) Champs combinés (parfois chaînés) t_list node; node.next = ...; Construire des structures complexes (listes, arbres, etc.)
---
Souhaites-tu que je te fasse un schéma mémoire illustrant la différence entre t_list, *t_list, et **t_list (avec flèches et adresses) ? Ce serait très parlant visuellement.
il y a 8 mois
Bonne question — allons droit au but.
---
🧩 1. Le pointeur : un stockage d’adresse mémoire
En C, un pointeur est une variable qui contient l’adresse mémoire d’une autre variable.
int a = 42;
int *p = &a; // p contient l’adresse de a
p ne contient pas 42, mais l’adresse où est stocké 42.
Pour accéder à la valeur pointée, on déréférence : *p → donne 42.
👉 * (déréférencement) : accède à la valeur à l’adresse contenue dans le pointeur.
👉 & (adresse de) : obtient l’adresse d’une variable.
---
📦 2. Différence entre pointeur et tableau
Élément Nature Taille / Allocation Exemple
Pointeur Variable contenant une adresse Taille fixe (4 ou 8 octets) int *p; p = malloc(10 * sizeof(int));
Tableau Bloc contigu de mémoire pour plusieurs éléments Taille fixe à la compilation int t[10];
➡️ Un tableau n’est pas un pointeur, mais dans beaucoup de contextes il se comporte comme tel (car son nom “décroît” en pointeur sur son premier élément).
Exemple :
int t[3] = {1, 2, 3};
int *p = t; // ok : t est converti en pointeur sur t[0]
printf("%d", *(p+1)); // affiche 2
Mais attention :
sizeof(t) != sizeof(p);
sizeof(t) = 3 × sizeof(int)
sizeof(p) = taille d’un pointeur (4 ou 8 octets)
---
🧱 3. La structure t_list
Une struct est un type composite regroupant plusieurs champs.
Exemple :
typedef struct s_list
{
int value;
struct s_list *next;
} t_list;
Ici, t_list est un type représentant une cellule d’une liste chaînée :
value : donnée stockée
next : pointeur vers la cellule suivante
---
🪜 4. Différences selon la déclaration
Déclaration Signification
t_list lst; une structure (objet complet) de type t_list
t_list *lst; un pointeur vers une structure t_list
t_list **lst; un pointeur sur un pointeur de t_list (souvent pour modifier une liste dans une fonction)
Exemples d’usage :
t_list node; // variable simple
t_list *p = &node; // pointeur sur la variable
t_list **pp = &p; // pointeur sur le pointeur
Cas typique dans une fonction qui modifie une liste :
void add_front(t_list **lst, t_list *new)
{
new->next = *lst;
*lst = new;
}
Ici :
lst est un pointeur sur le pointeur de tête ;
on peut modifier le début de la liste à partir de la fonction.
---
🧠 En résumé
Élément Contient Exemple Usage typique
Pointeur Adresse d’une variable int *p = &a; Manipuler des variables par référence
Tableau Plusieurs valeurs contiguës int t[5]; Stocker une série fixe de données
Struct (t_list) Champs combinés (parfois chaînés) t_list node; node.next = ...; Construire des structures complexes (listes, arbres, etc.)
---
Souhaites-tu que je te fasse un schéma mémoire illustrant la différence entre t_list, *t_list, et **t_list (avec flèches et adresses) ? Ce serait très parlant visuellement.
---
🧩 1. Le pointeur : un stockage d’adresse mémoire
En C, un pointeur est une variable qui contient l’adresse mémoire d’une autre variable.
int a = 42;
int *p = &a; // p contient l’adresse de a
p ne contient pas 42, mais l’adresse où est stocké 42.
Pour accéder à la valeur pointée, on déréférence : *p → donne 42.
👉 * (déréférencement) : accède à la valeur à l’adresse contenue dans le pointeur.
👉 & (adresse de) : obtient l’adresse d’une variable.
---
📦 2. Différence entre pointeur et tableau
Élément Nature Taille / Allocation Exemple
Pointeur Variable contenant une adresse Taille fixe (4 ou 8 octets) int *p; p = malloc(10 * sizeof(int));
Tableau Bloc contigu de mémoire pour plusieurs éléments Taille fixe à la compilation int t[10];
➡️ Un tableau n’est pas un pointeur, mais dans beaucoup de contextes il se comporte comme tel (car son nom “décroît” en pointeur sur son premier élément).
Exemple :
int t[3] = {1, 2, 3};
int *p = t; // ok : t est converti en pointeur sur t[0]
printf("%d", *(p+1)); // affiche 2
Mais attention :
sizeof(t) != sizeof(p);
sizeof(t) = 3 × sizeof(int)
sizeof(p) = taille d’un pointeur (4 ou 8 octets)
---
🧱 3. La structure t_list
Une struct est un type composite regroupant plusieurs champs.
Exemple :
typedef struct s_list
{
int value;
struct s_list *next;
} t_list;
Ici, t_list est un type représentant une cellule d’une liste chaînée :
value : donnée stockée
next : pointeur vers la cellule suivante
---
🪜 4. Différences selon la déclaration
Déclaration Signification
t_list lst; une structure (objet complet) de type t_list
t_list *lst; un pointeur vers une structure t_list
t_list **lst; un pointeur sur un pointeur de t_list (souvent pour modifier une liste dans une fonction)
Exemples d’usage :
t_list node; // variable simple
t_list *p = &node; // pointeur sur la variable
t_list **pp = &p; // pointeur sur le pointeur
Cas typique dans une fonction qui modifie une liste :
void add_front(t_list **lst, t_list *new)
{
new->next = *lst;
*lst = new;
}
Ici :
lst est un pointeur sur le pointeur de tête ;
on peut modifier le début de la liste à partir de la fonction.
---
🧠 En résumé
Élément Contient Exemple Usage typique
Pointeur Adresse d’une variable int *p = &a; Manipuler des variables par référence
Tableau Plusieurs valeurs contiguës int t[5]; Stocker une série fixe de données
Struct (t_list) Champs combinés (parfois chaînés) t_list node; node.next = ...; Construire des structures complexes (listes, arbres, etc.)
---
Souhaites-tu que je te fasse un schéma mémoire illustrant la différence entre t_list, *t_list, et **t_list (avec flèches et adresses) ? Ce serait très parlant visuellement.
- Oui je voudrais bien un schéma mémoire
' OR '1' = '1'
il y a 8 mois
Tintin2Loin
8 mois
- Je cherche absolument des professionnels pour m'expliquer la différence entre plusieurs points
Ah c'est dommage que tu n'aies pas précisé lesquels. Des gens auraient pu répondre.
Certifié tous gaz.
il y a 8 mois
Sponsorisé
Connectez-vous pour masquer les pubsEn ligne
156
Sur ce sujet0

















