begin process at 2012 05 30 09:51:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

sizeof pour determiner automatiquement la taille d'un tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

sizeof pour determiner automatiquement la taille d'un tableau

jeudi 2 septembre 2010 à 09:57:55 | sizeof pour determiner automatiquement la taille d'un tableau

Chatbour

Membre Club
Salut à tous et à toutes,

je me remets a C++ après une longue pause, donc soyez indulgents ^^

je me demande pourquoi ce code donne un résultat faux :

Code C/C++ :
#include <iostream>
using namespace std;

void show(int array[])
{
	for(int i=0; i<sizeof(array)/sizeof(int); i++)
	{
		cout << array[i] << ":";
	}
	cout << endl;
}

int main()
{
	int arr[] = {5, 4, 3, 2, 1};
	show(arr); // 1
	cout << sizeof(arr)/sizeof(int); // 2
}


la fonction show n'affiche que la première case du tableau, pourtant l'expression 2 affiche la taille convenable du tableau arr : 5 . Quelqu&#8217;un a-t-il une explication ? Merci.
jeudi 2 septembre 2010 à 13:13:35 | Re : sizeof pour determiner automatiquement la taille d'un tableau

rt15

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

En C/C++, un tableau ne contient que ses données. Il ne contient pas d'information sur lui même tel que sa taille, comme c'est le cas en java, vb, delphi...

Tout ce que reçoit show en paramètre, c'est un pointeur où est supposé se trouver une certaine quantité d'entiers. Il ne peut pas savoir combien.

C'est peut être un peu plus clair sur cette exemple de cette page :
Code C/C++ :
    int days[] = {1,2,3,4,5};
    int *ptr = days;
    printf("%u\n", sizeof(days));
    printf("%u\n", sizeof(ptr));


Dans le cas de ptr, sizeof renvoie la taille de ptr, c'est à dire un pointeur, donc 4 octets dans un prog 32 bits (Ce qui est la taille d'un int dans ton code -> 4 / 4 -> 1).

Pour ton code, tu peux par exemple réserver la première case du tableau pour contenir la taille, ou l'ajouter en argument à ta fonction show.
vendredi 3 septembre 2010 à 13:32:26 | Re : sizeof pour determiner automatiquement la taille d'un tableau

Chatbour

Membre Club
merci beaucoup :)


Cette discussion est classée dans : taille, int, tableau, sizeof, arr


Répondre à ce message

Sujets en rapport avec ce message

C ANSI allocation dynamique de tableau [ par pedu ] Ce petit pro beug en sortie, pourquoi et que faire ?#include #include int (*pi)[1][1]; /* pointeur sur un tableau d'entiers */void main(void){ unsi Help Me [ par manta7 ] Bonjour, j'aimerais coder un fonction qui prend en paramètre un tableau de nombres entiers, et qui recherche, dans ce tableau, la plus grande différen taille tableau [ par MiTcH37 ] J'aimerai savoir comment connaitre la taile d'un tableau, pour ne pas les envoyer comme argument dans une fonction.ex : void fct(int trier[], int tail Taille d'un pointeur ou d'un tableau ( très bizarre ) [ par thristam ] Bonjour à tous,Quand je veux connaitre la taille d'un tableau , je fais :int i[10];coutPas de problème Par contre , si je fais la même chose avec un p Agrandir la taille d'un tableau ? [ par ndubien ] Bonjour, Je cherche à agrandir un tableau ainsi:int variable = malloc( sizeof(int)*taille );Pour qu'elle devienne: int variable = malloc( sizeof(int)* Problème de définition de fonction dans une classe [ par labuche75 ] Bonjour à tous, je rencontre un problème à priori de définition de fonction dans la classe tableau permettant de manipuler de grands entiers nécessair creation de plusieur tableau [ par foxwar ] Bonjour, j'aimerai cree un programme ki permet de cree plusieur tableau du different taille et les afficher g ecirt ce programme mai je c pa ce k'il [clos] Affectation des objets a des conteneurs [ par mlahbib ] Bonsoir j'ai écrit mon programme sous IBM ILOG CPLEX Optimization Studio qui affecte a un nombre minimum de conteneur un ensemble donnée d'objet dont motus en C [ par amine124 ] Bonjour, Je veux créer un petit jeu "motus" qui lit un mot et la comparer par le mot d'or (à trouver); si le joueur trouve qqes lettres, on les affi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,482 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales