dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Malloc jeb 100000 float mainīgo C++

 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
Marcina



Joined: 15 Aug 2006
Posts: 26
Location: Rīga

PostPosted: 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
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
Marcina



Joined: 15 Aug 2006
Posts: 26
Location: Rīga

PostPosted: Fri Oct 27, 2006 1:23 pm    Post subject:

par abām atbildēm saku paldies! Smile
Back to top
View user's profile
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
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