Qu'est-ce qu'un tableau flexible, exactement? Je ne trouve pas grand-chose dessus.Qu'est-ce qu'un tableau flexible?
Répondre
Un tableau flexible est un tableau dont les limites d'index sont déterminées au moment de l'exécution et peuvent changer pendant la durée de vie du tableau.
Les tableaux Java sont flexibles. Par exemple, en Java, vous pouvez assigner un tableau à un autre:
int[] a1 = {1, 2, 3, 4};
int[] a2 = {1, 2, 3};
a1 = a2;
Dans un premier temps, a1 a une portée d'index 0-3, et a2 a indice de plage 0-2. Après l'affectation a1 = a2, a1 pointe vers un tableau avec la plage d'index 0-2, donc la plage d'index de a1 a varié pendant la durée de vie de a1.
Il n'existe pas de réseau flexible, mais un élément de réseau flexible existe. Il est utilisé pour fournir un accès à des données de longueur variable en tant que membre d'une structure.
Un élément de réseau flexible, qui est une caractéristique C99 , peut être un élément d'une structure avec plus d'un élément nommé . Un membre de groupe flexible peut être utilisé pour accéder à un objet de longueur variable . L'élément de matrice flexible doit être le dernier élément d'une telle structure et il a un type incomplet.
Est-ce que cela décrit ce que vous demandez? Ce n'est pas unique au compilateur C de Sun, mais il a été le premier aperçu clair que j'ai trouvé:
Sun Studio 12 Update 1: C User's Guide: Flexible Array Members
Il y a deux choses, il pourrait se référer. Le seul endroit que j'ai vu que précis libellé utilisé beaucoup est C99 cependant.
Un membre de tableau flexible est le nom officiel de C99 pour ce que l'on appelle (habituellement) le "struct hack". L'idée de base est que vous définissez une structure comme ceci:
struct x {
int a; // whatever members you want here.
size_t size;
int x[]; // no size, last member only
};
Ceci est principalement utilisé (ou exclusivement) avec l'allocation dynamique. Lorsque vous souhaitez allouer un objet de ce type, vous allouez assez d'espace pour quelque taille du tableau dont vous avez besoin:
struct x *a = malloc(sizeof(struct x) + 20 * sizeof(int));
a->size = 20;
Le membre size
n'est pas strictement nécessaire, mais souvent à portée de main pour garder la trace de la taille allouée pour un article. Celui ci-dessus a de l'espace pour 20 int, mais le point principal de ceci est que vous pourriez avoir plusieurs autour, chacun avec sa propre taille.
Doit cacher probablement l'appel complexe 'malloc()' derrière une fonction: 'struct x * struct_x_alloc (taille_t s) {struct x * t = malloc (taille de t + s * sizeof (int)); t-> taille = s; retour t; } ' –
@Chris: oui, mais n'allez pas trop loin pour que tout soit gérable, sinon les gens commenceront à le confondre avec le C++. ;-) –
@Chris: votre calcul de taille est faux - il devrait lire 'sizeof * t + ...'; au lieu de 'sizeof (int)', vous pouvez également utiliser 'sizeof * t-> x' – Christoph
Les éléments de matrice flexibles sont des outils indispensables dans la programmation réseau. En programmation réseau, vous ne connaissez jamais la taille des données à l'avance.
Par exemple, vous écrivez un code pour fournir l'intégralité de TABLE DE ROUTAGE pour certaines raisons. Vous ne savez jamais combien de routes sont disponibles à l'avance et l'allocation maximale supportée entravera gravement votre code. Le pari le plus sûr est de déclarer le membre flexible du tableau et de faire cuire toutes vos données et de les déclencher une fois.
- 1. utilisation invalide de tableau flexible-tableau flexible struct en tant que membre d'une autre structure
- 2. Problème DataGrid flexible
- 3. Flexible CountDownLatch?
- 4. intégration flexible avec ressort
- 5. problème de peau flexible
- 6. Routage flexible dans Zend
- 7. diagramme de dispersion flexible?
- 8. composant d'image flexible
- 9. question d'interface flexible
- 10. Pagination flexible dans Django
- 11. indicateur d'arborescence flexible
- 12. éléments de menu contextuel flexible en tamoul
- 13. Besoin d'aide pour la visualisation flexible
- 14. Hébergement Net (Flexible Medium Trust)
- 15. Configuration d'application flexible en C++
- 16. Application flexible hébergée à distance
- 17. ASP.NET MVC est-il flexible?
- 18. Comment couper toute l'application flexible?
- 19. Déploiement de mon application flexible
- 20. Erreur de création de flexible
- 21. Bipmapdata flexible et toile défilée
- 22. Styles remplacés pour module flexible
- 23. 3 colonnes de mise en page via DIVs (middle-flexible, toute la hauteur flexible, mode STRICT)
- 24. Codage d'un support de sport HTML flexible
- 25. Ajouter son propre filigrane au graphique flexible
- 26. état flexible basé sur plusieurs états
- 27. Transférer des données vers un client flexible
- 28. Erreur de compilation avec le fichier flexible
- 29. Images de fond autour de Contenu flexible?
- 30. Je recherche une solution de reporting flexible
Problème de langue-agnostique, en essayant de comprendre les différences entre les tableaux statiques/dynamiques/flexibles. –
@ rlb.usa - Les tableaux "flexibles" n'existent pas, mais un "membre flexible du tableau" est très spécifique à C (et C++ mais personne ne l'utilise ici). –
Veuillez fournir un lien ou un devis ou une référence. –