problème pointeurs tableaux !!!!
2 participants
Page 1 sur 1
problème pointeurs tableaux !!!!
je ne comprends pas où se situe mon erreur !! Sans soute la faute est légére mais je ne la situe pas. Merci de votre aide envers une débutante
- Code:
#include <stdio.h>
#include <stdlib.h>
int i =0;
int main(int argc, char *argv[])
{
int tab [2] [3] = { { 1, 3, 5}, {2,4,6} };
int (*ptr) [3];
ptr = tab;
int *p;
p = ptr;
for ( ; i<3; i++) {
printf("%d", *p++); }
system ("pause");
return 0;
}
butterfly-0751- Messages : 1
Date d'inscription : 17/03/2011
Re: problème pointeurs tableaux !!!!
Ceci :
Effectivement, tu cherches à affecter la valeur d'un pointeur (p : pointeur sur un int) dans un autre d'un type différent (ptr : pointeur sur un tableau de 3 int).
Ça n'a aucun sens. Ça peut fonctionner avec l'élément 0 mais sinon, c'est incorrect, car les objets pointés n'ont pas forcément la même taille. Le comportement est donc indéterminé.
Ceci fonctionne :
- Code:
-------------- Build: Debug in tableaux ---------------
Compiling: main.c
C:\dev\bien-prog\butterfly-0751\tableaux\main.c: In function 'main':
C:\dev\bien-prog\butterfly-0751\tableaux\main.c:14:7: warning: assignment from incompatible pointer type
Linking console executable: bin\Debug\tableaux.exe
Output size is 27,16 KB
Process terminated with status 0 (0 minutes, 1 seconds)
0 errors, 1 warnings
Effectivement, tu cherches à affecter la valeur d'un pointeur (p : pointeur sur un int) dans un autre d'un type différent (ptr : pointeur sur un tableau de 3 int).
Ça n'a aucun sens. Ça peut fonctionner avec l'élément 0 mais sinon, c'est incorrect, car les objets pointés n'ont pas forcément la même taille. Le comportement est donc indéterminé.
Ceci fonctionne :
- Code:
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int i;
int tab [2] [3] = { { 1, 3, 5}, {2, 4, 6} };
int (*ptr) [3];
ptr = tab;
int *p;
p = ptr[0];
for (i = 0 ; i < 3; i++)
{
printf ("%2d", *p++);
}
printf ("\n");
p = ptr[1];
for (i = 0 ; i < 3; i++)
{
printf ("%2d", *p++);
}
printf ("\n");
return 0;
}
- Code:
1 3 5
2 4 6
Process returned 0 (0x0) execution time : 0.039 s
Press any key to continue.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum