Parametry deklaracji, wywołana i definicji funkcji

0

Witam. Ostatnio wróciłem do nauki C po bardzo długiej przerwie, czytam trochę pÓÓÓÓki co chcę opanować jakieś podstawy teorii. Nie rozumiem o co chodzi z parametrami funkcji. W przykładzie który podaję rozumiem że: zadeklarowana jest funkcja fun z parametrem wskaźnikowym *c i ten sam parametr użyty jest w definicji tej funkcji. Ale z kolej w funkcji main jest wywołanie funkcji fun z przypisaniem jej wyniku do zmiennej a. Tylko że z tego co ja rozumiem jako parametr wywołania jest podane &a czyli pobranie adresu komórki pamięci w której zapisana jest wartość B. i teraz moje pytanie jest takie: dlaczego w wywołaniu funkcji fun użyty jest parametr &a a nie &c skoro w deklaracji i definicji funkcji użyty jest parametr *c?

void fun(char *c);
int main(void)
{
	chat a='B';
	a=fun(&a);
}

void fun(chat *c)
{
	*c=*c+('a'-'A');
}
0

Ten kod nie powinien się skompilować. Nie można przypisać do zmiennej a wyniku funkcji, która nic nie zwraca,
bo tego wyniku nie ma.

teraz moje pytanie jest takie: dlaczego w wywołaniu funkcji fun użyty jest parametr &a a nie &c skoro w deklaracji i definicji funkcji użyty jest parametr c?

Bo w funkcji głównej jest zmienna a, a nie c. Nie można odwołać się do zmiennej c, bo jest w innym zasięgu (scope).
Parametr funkcji może mieć dowolną nazwę i jest widziana w zasięgu ciała funkcji.

char a;
char* c = &a; // tak możesz rozumieć przekazanie wskaźnika do funkcji

Teraz &a i c wskazują dokładnie to samo miejsce w pamięci.

Przekazywanie parametru przez wartość i referencję

1 użytkowników online, w tym zalogowanych: 0, gości: 1