|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
Marcina
Joined: 15 Aug 2006 Posts: 26 Location: Rīga
|
Posted: Fri Oct 27, 2006 12:39 pm Post subject: Malloc jeb 100000 float mainīgo C++ |
|
Man ļoti daudz vajag float mainīgo, taču saskāros ar problēmu:
ja raksta
float a[100];
ir saprotams, ka, lai vērstos pie noteikta elementa, mainīsim index un mēs varam katru dalīt, reizināt utt.
Izmantojot malloc funkciju, izrādās, jāizmanto rādītājs uz float
float *a;
a = (float *) malloc(100)
Jautājumi:
kā lai tagad vēršos pie katra float masīva elementa?
kā lai reizinu, dalu elementu, ja es radīju rādītāju masīvu?
float = 32bit = 4 baiti - tas nozīmē, ka lai rezervētu 100 float mainīgo, nepieciešams rakstīt
a = (float *) malloc(4*100)? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Oct 27, 2006 1:16 pm Post subject: |
|
Tu programmē C vai C++? (topika nosaukumā rakstīts C++, bet postā lietots malloc...)
Ja C++, tad raksti std::vector<float> a(100) un lieto tos floatus kā parastu masīvu: a[3] = 4.0f; a[2] = a[1]/2.0f; utt.. Gan drošāk, gan ērtāk.
Ja programmē C, tad vajag atcerēties, ka masīvs ir pointeris. Tb:
a[2] ir tas pats kas *(a+2). Tāpēc, ja dots parasts pointeris, tas tikpat labi ir arī masīvs:
Code: | float* a = (float*) malloc (100*sizeof(float)); // izdala atmiņu 100 floatiem.
a[2] = a[1]/2.0f;
a[99] = 4.4f; // pēdējais masīva elements
free(a); // neaizmirsti atbrīvot atmiņu |
|
|
Back to top |
|
|
Marcina
Joined: 15 Aug 2006 Posts: 26 Location: Rīga
|
Posted: Fri Oct 27, 2006 1:23 pm Post subject: |
|
par abām atbildēm saku paldies! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|