To tylko jedna z 5 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
Posługiwanie się funkcjami
Visual C++ 6.0
Funkcja jest sparametryzowanym opisem czynności. W miejscu wywołania funkcji musi być znana jej deklaracja albo definicja. W szczególności oznacza to, że wywołanie
sum(10, 20) funkcji sumującej argumenty, musi być poprzedzone
albo jej definicją
int sum(int one, int two)
{
return one + two;
}
albo jej deklaracją
int sum(int one, int two);
albo włączeniem nagłówka zawierającego deklarację.
Uwaga: W deklaracji funkcji można pominąć dowolny zestaw identyfikatorów parametrów. Jeśli uczyni się to w definicji, to uniemożliwi to odwoływanie się do argumentów.
Parametry i argumenty
Wywołanie funkcji zaczyna się od skojarzenia jej parametrów z argumentami. Skojarzenie parametru z argumentem odbywa się przez-wartość, co oznacza, że parametr jest traktowany tak, jak lokalna zmienna funkcji, zadeklarowana tuż przed jej pierwszą instrukcją i zainicjowana wartością argumentu.
A zatem, jeśli definicją funkcji jest
int sum(int one, int two)
{
return one + two;
}
to dla wywołania sum(10, 20)
funkcja jest traktowana tak, jakby miała postać
int sum()
{
int one = 10;
int two = 20;
return one + two;
}
Parametry zwykłe
Parametr funkcji jest "zwykły", jeśli nie jest wskaźnikiem ani odnośnikiem. Z parametrem zwykłym można skojarzyć argument, który jest takiego samego typu jak parametr, albo który można poddać niejawnej konwersji do typu parametru. Zainicjowanie parametru polega na skopiowaniu argumentu. Jeśli argument jest strukturą, to kopiuje się wszystkie jej elementy (co w przypadku dużych struktur ma oczywiste wady!).
Po dokonaniu skojarzenia, wszelkie operacje wykonywane na parametrze dotyczą lokalnej zmiennej zainicjowanej argumentem i nie powodują zmiany wartości skojarzonego z nim argumentu.
#include
int main(void) {
void inc(int par);
int fix = 10;
cout
(…)
…
int sum(int tab[20])
{
int sum = 0;
for(int i = 0; i < 3 ; i++)
sum += tab[i];
return sum;
}
jest niejawnie przekształcana w funkcję
int sum(int *const tab)
{
int sum = 0;
for(int i = 0; i < 3 ; i++)
sum += tab[i];
return sum;
}
Powoduje to, że jeśli chce się zdefiniować funkcję do sumowania tablic, nie odwołującą się do zmiennych globalnych, to jeden z jej argumentów musi określać liczbę elementów…
... zobacz całą notatkę
Komentarze użytkowników (0)