C programmēšanā kāda ir atšķirība starp function_name un mainīgo?


Atbilde 1:

Funkcijas nosaukums ir nosaukums, kuru jūs piešķirat izveidotajai funkcijai, kas var aizņemt 1 līdz daudzām koda rindām. Funkcija var saņemt no 0 līdz daudziem daudziem parametriem; bet atdod tikai vienu.

Mainīgais lielākoties tiek nosaukts atmiņas telpai, kas piešķirta informācijas saņemšanai un glabāšanai, ko var arī nodot kā parametru funkcijai. Parasti jūs prasāt, lai mainīgie būtu noteikta veida: vesels skaitlis, virkne, raksturs utt.


Atbilde 2:
C programmēšanā kāda ir atšķirība starp function_name un mainīgo?

Tās ir divas pilnīgi atšķirīgas lietas.

Funkcijas nosaukums (nav nepieciešams pasvītrojums, tā ir tikai frāze) ir funkcijas nosaukums, ko nosaka, kad funkcija tiek deklarēta vai definēta.

Mainīgais ir - labi, nav pilnībā skaidrs, kāds ir C mainīgais. C standarts nelieto vārdu “mainīgais” parastajā nozīmē. C terminu objekts definē kā “datu glabāšanas reģionu izpildes vidē, kura saturs var attēlot vērtības”. Nosaukto deklarēto objektu pamatoti var saukt par “mainīgo”, taču nav vienprātības par to, kas tieši ir vai nav “mainīgais”.

Var izsaukt funkciju. Objekts var turēt vērtības.


Atbilde 3:

Galvenā atšķirība ir tā, ka kompilators automātiski izveido funkciju, kas saistīta ar funkcijas nosaukumu. C daļā funkcijas nav “pirmās klases objekti” - jūs nevarat tās nodot funkcijām, kas tās modificēs / apvienos un atgriezīs tādā veidā, kā jūs varat, izmantojot ciparus vai rakstzīmju virknes).

mainīgie satur pirmās klases objektu vērtības (veseli skaitļi, rakstzīmes, mainīgie skaitļi utt.). Funkcijai var būt rādītājs, un tas ir pirmās klases objekts, kuru varat saglabāt un nodot / atgriezties no funkcijām (un izmantot, lai piezvanītu funkcija), bet pašas funkcijas “vērtību” izpildes laikā nevar mainīt, tāpat kā ar pirmās klases objektiem.

Tātad tie izskatās gandrīz tādi paši kā mainīgie, bet vienīgais, ko jūs varat darīt ar viņiem, izņemot viņu adreses ņemšanu, ir viņiem piezvanīt. Jūs nevarat teikt, ka main = {kaut kas ...}, jums vienkārši jādefinē galvenā funkcija un jāļauj kompilatoram veikt nosaukuma un koda saistīšanu aiz ainas.

Valodas, piemēram, Haskell, kurās var noteikt funkciju vērtību izpildes laikā, šī iemesla dēļ sauc par “funkcionālām” valodām. Vienkāršs piemērs ir funkcija, kuras nosaukums ir padarīt nodokļu papildinātāju, kurai jūs ievadāt nodokļu likmi, un tā atdod funkciju, kas tai pievienotajām precēm pievienos fiksētu nodokļa likmi:

adstatetax = maketaxadder (.05)

addlocaltax = maketaxadder (.015)

šeit mēs esam izveidojuši 2 funkcijas izpildes laikā, kuras var saukt par, piem. papildsummas nodoklis (100) atgriezīs 105, savukārt papildlokaltax (100) atgriezīs 101.50.

mainīgajam papildlikmes nodoklim ir tādas funkcijas “vērtība”, kas ņem skaitli un atdod vēl vienu ar 5% pievienotu. Jūs varat darīt līdzīgas lietas C ar struktūrām un funkciju rādītājiem, bet tas ir daudz grūtāk (C rādīt funkciju rādītāju tipus ir ļoti grūti) un vairāk pakļauts kļūdām.


Atbilde 4:

Funkcijas nosaukums būtībā ir rādītājs, tāpēc jūs varat rīkoties šādi: void (* func) (int); func = myVoidFunc; // vai alternaffunc = & myVoidFunc;

un tā tiešām ir galvenā atšķirība. Parasti, strādājot ar rādītāju, ir ļoti svarīgi, vai jūs izmantojat operatora (ampersand) adresi vai nē, piemēram:

int * ptr = myVar; // andint * ptr = & myVar;

gandrīz noteikti radīs ļoti atšķirīgu izturēšanos, bet, izņemot to, funkciju nosaukumi tiešām ir tikai norādes, vismaz tā es to redzu. Es esmu pārliecināts, ka iedziļinos detaļās, kurām man nav nekādas jēgas, bet, raugoties no jūsu skatpunkta, un, manuprāt, es esmu pārliecināts, ka tas notiks.

Vēl viena atšķirība, protams, ir tā, ka jūs nevarat pieļaut funkcijas nosaukumu, jūs nevarat tam izdarīt rādītāja aritmētiku vai vismaz, ja varat, tas ir īpaši bīstams utt. Un tā tālāk.