problème pointeurs tableaux !!!!

Voir le sujet précédent Voir le sujet suivant Aller en bas

problème pointeurs tableaux !!!!

Message  butterfly-0751 le Jeu 17 Mar 2011 - 17:36

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: problème pointeurs tableaux !!!!

Message  -ed- le Dim 27 Mar 2011 - 2:31

Ceci :
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
nous indique qu'il y a un problème de variables incompatibles. C'est très probablement un bug.

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;
}
et produit :
Code:

 1 3 5
 2 4 6

Process returned 0 (0x0)  execution time : 0.039 s
Press any key to continue.

_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum