Bonjour,
J’essaye de comprendre les pointeurs.
Pour ce faire j’ai fait le code suivant, c’est à dire un affichage avec la notation entre crochet et la notation pointeur afin de comparer.
Cependant les adresses des valeurs ne correspondent pas donc je suppose qu’il y a une erreur mais je ne vois vraiment pas ou, pouvez vous m’aider ?
J’ai bien la bonne correspondance entre les adresses avec les tableaux de char mais pas avec les matrice de char, le code ci dessous :
#include <stdio.h>
#include <stdlib.h>
// Soit un tableau de char à 1 dimension
char tableau[2] =
{'A', 'B'};
char matrice[2][3] =
{
{'A', 'B', 'C'},
{'D', 'E', 'F'}
};
void affichageTableau(char *tableau)
{
// Affichage avec la notation entre crochet :
for (int i = 0; i < 2; i++)
printf("Le tableau[%d] = %c et a pour adresse : %p\n", i, tableau[i], &tableau[i]);
printf("\n\n");
// Affichage avec la notation pointeur :
for (int i = 0; i < 2; i++)
printf("Le tableau[%d] = %c et a pour adresse : %p\n", i, *(tableau + i), tableau + i);
}
void affichageMatrice(char (*pMatrice)[2][3])
{
// Affichage avec la notation entre crochet :
for (int ligne = 0; ligne < 2; ligne++)
for (int colonne = 0; colonne < 3; colonne++)
printf("La matrice[%d][%d] = %c et a pour adresse : %p\n", ligne, colonne, matrice[ligne][colonne], &matrice[ligne][colonne]);
printf("\n\n");
// Affichage avec la notation pointeur :
for (int ligne = 0; ligne < 2; ligne++)
{
printf("L'adresse de la ligne : %d = %p\n",ligne + 1, *(pMatrice + ligne));
// (*pMatrice + ligne) = pointeur sur la ligne i + 1
for (int colonne = 0; colonne < 3; colonne++)
{
char *pLigne = *(matrice + ligne);
printf("La matrice[%d][%d] = %c et à pour adresse : %p\n", ligne, colonne, *(pLigne + colonne), (*(pMatrice + ligne)) + colonne);
}
}
}
int main(void)
{
affichageMatrice(&matrice);
// affichageTableau(tableau);
return EXIT_SUCCESS;
}