C initialisation du tableau de tableaux
J'ai ce problème. J'ai besoin d'avoir un tableau de float tableaux pour stocker avant de m'exécuter certaines fonctions. Comment puis-je y parvenir, car je ne peux pas initialiser un tableau withut un non constante? Je dois faire une fonction qui permet de créer ce tableau avec la fonction malloc puis retour dans, et de confier à un pointeur?
typedef struct
{
float RGBA[4];
} graphColors;
J'ai besoin d'avoir un tableau de grapColors. Je suis désolé pour mon manque de connaissance, je suis un programmeur Java et de la nécessité de travailler avec des C maintenant.
EDIT:
graphColors *initializeGraphColors(){
graphColors *gp;
int i;
float HI = 1.0f;
float LO = 0.0f;
float temp[] = {1.0f, 1.0f, 1.0f, 0.0f};
gp = (graphColors *) malloc(nrOfLines * sizeof(graphColors));
for(i = 0;i < nrOfLines; i++){
gp[i].RGBA[0] = LO + (float)rand()/((float)RAND_MAX/(HI-LO));
gp[i].RGBA[1] = LO + (float)rand()/((float)RAND_MAX/(HI-LO));
gp[i].RGBA[2] = LO + (float)rand()/((float)RAND_MAX/(HI-LO));
gp[i].RGBA[3] = 0.0f;
}
return gp;
}
Puis dans ma classe:
graphColors *gc;
gc = initializeGraphColors();
Obtenir cette erreur:
error C2040: 'gc' : 'graphColors *' differs in levels of indirection from 'graphColors'
- Vous n'avez pas besoin de jeter la valeur de retour de
malloc
dans un programme C.
Vous devez vous connecter pour publier un commentaire.
Si les valeurs que vous avez besoin de stocker dans le tableau ne sont pas connus au moment de la compilation, oui, vous avez besoin d'une fonction si vous ne devez allouer un tableau via
malloc()
si le taille de la matrice est inconnu au moment de la compilation.... Donc si la taille et le contenu est connu au moment de la compilation, vous pouvez le faire...
Si la taille est connue, mais pas les valeurs, vous pouvez le faire...
Si vous ne connaissez pas la taille ou le contenu jusqu'à l'exécution, vous pouvez l'aborder de cette façon...
int *a;
espacement, mais parce queint* a, b;
est ambigu.b
n'est pas unint *
, mais unint
. (int *a, *b;
correctement) Aussi, assurez-vous de libérer votre tableau lorsque vous avez terminé avec elle!