J'ai un tableau que je veux faire globalement, et je veux initialiser dans un appel de la fonction.
Je veux d'abord le déclarer sans savoir que sa taille: et ultérieure initialise: p> Comment puis-je faire cela?
Je suis très nouveau à C et peut-être que je vais complètement le mauvais moyen, toute aide serait grandement appréciée. p> p>
4 Réponses :
Le moyen de le faire est avec puis dans la fonction init vous Ceci attribue Vous devez vérifier si l'allocation Échec de: P> malloc code>. D'abord déclarer juste un pointeur: masloc code> IT: p> taille_of_array code> éléments de la taille que STR code> pointe vers ( char code> dans ce cas). p> if (str == NULL) {
// allocation failed
// handle the error
}
En C, vous ne devriez pas vraiment lancer le résultat de MALLOC - vous n'avez que vraiment besoin de le faire en C ++ - il devrait être évité en C tel qu'il peut masquer des avertissements serviants.
Si vous souhaitez être général, utilisez Tailleof (* str) code>, vous n'avez donc pas à répéter le nom de type. En outre, en C, vous ne devriez pas lancer le résultat de MALLOC.
char* str; str = (char*)malloc(size*sizeof(char)); You can skip the *sizeof(char) since sizeof(char) == 1 by definition.Don't forget to deallocate the memory using free
Si vous souhaitez être général, utilisez Tailleof (* str) code>, vous n'avez donc pas à répéter le nom de type. En outre, en C, vous ne devriez pas lancer le résultat de MALLOC.
En C, vous ne devriez pas vraiment lancer le résultat de MALLOC - vous n'avez que vraiment besoin de le faire en C ++ - il devrait être évité en C tel qu'il peut masquer des avertissements serviants.
Créer un Char * str; code> au lieu d'un tableau. Ensuite, allouez la quantité requise de la mémoire à l'aide de MALLOC ou de CALOCO et effectuez l'initialisation de la fonction appelée elle-même. P>
Faites de votre déclaration de tableau globale ressemblent à ceci: puis dans votre fonction d'initialisation fait quelque chose comme ceci: p>
Tailleof (Char) Code> est 1 par définition. Si vous souhaitez écrire du code qui fonctionne avec n'importe quel type, utilisez Tailleof (* str) code>.
@BEN: TRUE, mais c'est une bonne habitude d'inclure le Tailleof code> quel que soit le type. Je suis bien conscient des arguments en faveur de tailleof (* str) code> mais je préfère toujours tailleof (char) code> dans cette instance.