Language C

Lena11 -  
 Lena11 -
Bonjour,

Bonjour je voudrais savoir s'il est possible que l'on m'aide.
J'ai un exercice à faire, pourriez vous m'aidez? :sad:

(Pointeurs et tableaux)
Un programme contient la déclaration suivante :
u16 tab[10] = {4,12,53,19,11,60,24,12,89,19};
Compléter ce programme de façon à pouvoir afficher les adresses des éléments du tableau.
Merci de répondre :D

7 réponses

einsteinn Messages postés 9 Statut Membre
 
bsr,

la déclaration :
u16 tab[10] = {4,12,53,19,11,60,24,12,89,19}; est fausse,

voici un programme qui affiche les adresses des éléments du tableau.

#include <stdio.h>

int main()
{
int tab[10] = {4,12,53,19,11,60,24,12,89,19};

for(int i=0;i<10;i++)
printf("%d\n",tab+i);

getchar();
return 0;
}
0
loupius Messages postés 789 Statut Membre 148
 
Compléter ce programme ... c'est sans doute de l'humour au trois ou quatrième degré ! ;-)
Au 'u16' près, on pourrait écrire:
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int tab[10] = {4, 12, 53, 19, 11, 60, 24, 12, 89, 19};
  int i;
  for (i=0; i<sizeof(tab); i++)
    printf ("adresse tab[%d] : %p\n", i, &tab[i]);
  return EXIT_SUCCESS;
}
Bonne continuation.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Salut loupius,

La condition d'arrêt du for est plutôt i<sizeof tab/sizeof *tab

Cdlt,
0
loupius Messages postés 789 Statut Membre 148 > fiddy Messages postés 11653 Statut Contributeur
 
Oui, j'aurais dû essayer essayer le programme avant de le poster.
Au nom de la communauté, je te remercie ;-)
0
einsteinn Messages postés 9 Statut Membre
 
vous parler de l'humour...
il fallait au moins exécuter ce programme avant de postuler de tels erreurs.
0
loupius Messages postés 789 Statut Membre 148
 
printf("%d\n",tab+i);
Je pense ne pas être le seul à ne pas toujours essayer les programmes ;-)
Bonne soirée.
0
einsteinn Messages postés 9 Statut Membre
 
j ai tester est ça marche bien,
vérifier s'il vous plait!!!! avant de répondre.
0
loupius Messages postés 789 Statut Membre 148
 
Ah bon... Vouloir afficher une adresse comme un entier, je pense que mon compilateur râlerait ! Mais tu dois être à la pointe de la nouveauté et moi à la traîne!
Bonne soirée.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
J ai tester est ça marche bien
Ce n'est pas parce que ça marche que c'est correct. Loin de là même. Si ton compilateur n'affiche pas de warning, je te conseille d'en changer.

printf("%d\n",tab+i);
tab+i est de type void*, %d sert pour afficher un int.
Pour afficher une adresse, il faut utiliser %p (et non %d). D'où l'intervention de loupius.

Cdlt,
0
loupius Messages postés 789 Statut Membre 148 > fiddy Messages postés 11653 Statut Contributeur
 
Ouf, tu me rassures; j'ai cru un instant que je n'étais plus dans le coup !
Bonne soirée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
einsteinn Messages postés 9 Statut Membre
 
tu parle de quel nouveauté?
On est la pour changer d'idées et partager l'information.
0
einsteinn Messages postés 9 Statut Membre
 
Merci infiniment fiddy, toi aussi loupius.
Bonne soirée.
0
Lena11
 
Merci à tous. C'est simple pour vous mais je débute juste :)
0