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 8 Date d'inscription   Statut Membre Dernière intervention  
 
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 697 Date d'inscription   Statut Membre Dernière intervention   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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut loupius,

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

Cdlt,
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148 > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 8 Date d'inscription   Statut Membre Dernière intervention  
 
vous parler de l'humour...
il fallait au moins exécuter ce programme avant de postuler de tels erreurs.
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   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 8 Date d'inscription   Statut Membre Dernière intervention  
 
j ai tester est ça marche bien,
vérifier s'il vous plait!!!! avant de répondre.
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 697 Date d'inscription   Statut Membre Dernière intervention   148 > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 8 Date d'inscription   Statut Membre Dernière intervention  
 
tu parle de quel nouveauté?
On est la pour changer d'idées et partager l'information.
0
einsteinn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Merci infiniment fiddy, toi aussi loupius.
Bonne soirée.
0
Lena11
 
Merci à tous. C'est simple pour vous mais je débute juste :)
0