Tableau

Fermé
Mike - 21 oct. 2021 à 17:11
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 21 oct. 2021 à 17:30
Bonjour,

Comment renvoyer un tableau utilisé dans une fonction Cad sans utiliser les pointeurs

Configuration: Android / Chrome 94.0.4606.85

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 21 oct. 2021 à 17:47
Salut Mike,

En principe tu ne peux pas.

Le C ne permet pas de renvoyer un type tableau avec un
return
, si c'est bien cela ta question.

Par contre, tu peux :
  • renvoyer un pointeur vers une zone mémoire allouée avec sur le tas avec malloc(), mais tu ne sembles pas vouloir de cette option
  • renvoyer une struct déclarée dans la fonction (une variable automatique sur la pile), et dont les données seront copiées pour la fonction appelante, comme quand tu renvoies un int, ou un autre type. La struct peut alors comporter un espace mémoire pour un type tableau avec des données dedans, et tout ceci sera copié avec le reste du contenu de la struct, le padding, etc. (en interne, ce sera l'équivalent d'un memcpy() qui sera fait)


La raison pour laquelle ce n'est pas possible "facilement" c'est que passer, par copie, une grande quantité de données que peut contenir un tableau n'est pas du tout optimisé, et, de plus, risque de heurter les limites de la pile.


Dal
0