No popatrz
Napisz funkcję kw(int a, int *b) , która policzy kwadrat przekazanej liczby całkowitej a i zapisze ją w zmiennej b. Wywołaj funkcję i wypisz wynik.
Czyli ta funkcja ma dwa argumenty. Pierwszy z nich to wartość, którą mamy podnieść do kwadratu. Drugi argument to wskaźnik. Prawdopodobnie w zadaniu chodziło o to, że mamy wyliczoną wartość zapisać pod adres, na który wskazuje wskaźnik b. Musimy jednak uważać, żeby nie zacząć nadpisywać niezaalokowanej pamięci.
void kw(int a, int *b)
{
if (b != NULL)
{
*b = a * a;
}
}
Używamy operatora dereferencji, czyli wyłuskania (czyli po prostu gwiazdki, postawionej przed nazwą wskaźnika). Kwadrat liczby to jak wiadomo a * a. Czyli pod adres, na który wskazuje wkaźnik b, przypisujemy wartość wyrażenia a * a, czyli kwadrat liczby a.
Bardzo istotne jest sprawdzenie, czy pamięć pod wskaźnikiem została zaalokowana. Nie trzeba pisać warunku
if (pointer != NULL)
{
...
}
Można po prostu równie dobrze napisać:
if (pointer)
{
...
}
Gdzie pointer to oczywiście jakiś wskaźnik.