C wika - mga payo sa mga function

Author Topic: C wika - mga payo sa mga function  (Read 4 times)

impakt

  • Guest
C wika - mga payo sa mga function
« on: January 01, 1970, 01:00:00 am »
Hello sa lahat,
Mayroon akong problema sa pag-unawa sa kung paano ang mga payo sa mga function na trabaho.Mayroon akong ilang mga libro sa bahay, ngunit walang mahirap paliwanag sa mga ito.Mayroon bang isang artikulo / libro / link na nagpapaliwanag kung paano ang mga payo na gumana ng trabaho, ngunit ang paliwanag para sa mga manika?Alam ba ninyo ng isang bagay tulad nito?
Salamat!



impakt

  • Guest
C wika - mga payo sa mga function
« Reply #1 on: January 01, 1970, 01:00:02 am »

impakt wrote:

Hello sa lahat,

Mayroon akong problema sa pag-unawa sa kung paano ang mga payo sa mga function na trabaho.
Mayroon akong ilang mga libro sa bahay, ngunit walang mahirap paliwanag sa mga ito.
Mayroon bang isang artikulo / libro / link na nagpapaliwanag kung paano ang mga payo na gumana ng trabaho, ngunit ang paliwanag para sa mga manika?
Alam ba ninyo ng isang bagay tulad nito?

Salamat!

btbass

  • Guest
C wika - mga payo sa mga function
« Reply #2 on: January 01, 1970, 01:00:03 am »
Ang mga ito ay hindi na mahirap.Isang function vanturo lang ay naglalaman ng address ng entry point ng function.
Kung ikaw ay isang function tulad ng:

int myfunction (int x);

ipinapahayag mo ang isang function ng vanturo na tumutugma sa mga argumento:

int (* myfunctionpointer) (int x);
Ang mga braket tukuyin ito bilang isang vanturo function.

Pagkatapos ay maaari mong italaga ang entry address ng iyong function na ito.

myfunctionpointer = myfunction; / * isang paraan * /
myfunctionpointer = &myfunction; / * Ang isa pang paraan * /

Pagkatapos tawag mo ito nais mong tawagin ang function:

answer = myfunctionpointer (argument_x);

Mayroong maraming mga lugar sila ng tulong sa pamamagitan ng pagsulat matikas afficient code.
Ang isang simpleng halimbawa ay sa isang sistema kung saan ang mga menu selection ay isang index sa isang array ng functionpointers.

Ito ay isang maliit na halimbawa ng isang pahayag na lumipat ipatupad sa isang index sa isang array ng mga payo ng estado function.Ang mga bumalik mula sa tinatawag na function ay ang estado lumipat.Code:/*--- Estado Machine ---*/enum ESTADO (IDLE_S = 0, MASSAGE_S, LUMBAR_S, BOLSTER_S, ERROR_S);/*--- Estado makina function.
---*/enum ESTADO idle (walang laman);

enum ESTADO massage (walang laman);

enum ESTADO panlikod (walang laman);

enum ESTADO magbolster (walang laman);

enum ESTADO error_state (walang laman);/*--- Program entry point ---*/magpawalang-bisa pangunahing (walang laman)

(

enum ESTADO (* const Pump_State []) (walang laman) = (idle, massage, panlikod, magbolster, error_state);

enum ESTADO Estado = IDLE_S;para sa (;;)

(

Estado = Pump_State [State] (); / * execute ng estado makina * /

)

)/*--- Dulo ng mga File ---*/


impakt

  • Guest
C wika - mga payo sa mga function
« Reply #3 on: January 01, 1970, 01:00:04 am »
Hello btbass,
Para sa halimbawa na ito mayroon kayo rin ang klasikong pagpapatupad ng pahayag na lumipat?Ito ay makakatulong sa akin makakuha ng isang mas magandang pagtingin sa pagpapatupad na ito.
Salamat!


btbass

  • Guest
C wika - mga payo sa mga function
« Reply #4 on: January 01, 1970, 01:00:05 am »
Ang parehong halimbawa bilang isang lumipat na pahayag ay magiging:

Code:

/*--- Estado Machine ---*/enum ESTADO (IDLE_S = 0, MASSAGE_S, LUMBAR_S, BOLSTER_S, ERROR_S);/*--- Estado makina function.
---*/enum ESTADO idle (walang laman);

enum ESTADO massage (walang laman);

enum ESTADO panlikod (walang laman);

enum ESTADO magbolster (walang laman);

enum ESTADO error_state (walang laman);/*--- Program entry point ---*/magpawalang-bisa pangunahing (walang laman)

(

enum ESTADO Estado = IDLE_S;para sa (;;)

(

lumipat (Estado)

(

kaso IDLE_S: Estado = idle ();

break;kaso MASSAGE_S: Estado = massage ();

break;kaso LUMBAR_S: Estado = panlikod ();

break;kaso BOLSTER_S: Estado = magbolster ();

break;kaso ERROR_S: Estado = error_state ();

break;default na: Estado = ERROR_S;

)

)

)/*--- Dulo ng mga File ---*/