5 Wskaźniki
Zadania należy rozwiązać bez interpretacji wskaźników jako tablic.
- Skopiuj lub przepisz kod i sprawdź wyniki na standardowym wyjściu:
#include <stdio.h>
#include <stdlib.h>
int main()
{
("%Iu\n", sizeof(int));
printf("%Iu\n", sizeof(int*));
printfreturn 0;
}
- W jednym pliku wykonaj czynności:
Napisz funkcję
sum
z dwoma argumentami typuint
. Funkcja ma zwracać sumę wartości przekazanych przez argumenty. Stwórz przypadek testowy.Napisz funkcję
sumVals
z dwoma argumentami, które są wskaźnikami do zmiennych typuint
. Funkcja powinna zwracać sumę wartości, na które wskazują te argumenty. Utwórz przypadek testowy.Napisz funkcję
addPtr
z trzema argumentami, które są wskaźnikami do zmiennych typuint
. Funkcja ma być procedurą (typ zwracanyvoid
). Funkcja ma ustawić wartość zmiennej wskazywanej przez trzeci argument funkcji jako sumę wartości wskazywanych przez dwa wcześniejsze argumenty. Utwórz przypadek testowy.
Napisz funkcję
copyInt
z argumentami:x
typuint
orazw
, który jest wskaźnikiem doint
. Funkcja ma przepisać wartośćx
do zmiennej wskazywanej przezw
. Stwórz przypadek testowy.Napisz funkcję
findMax
z dwoma argumentami: wskaźnikiemnum1
na stałą wartość typudouble
i stałym wskaźnikiemnum2
na zmienną typudouble
. Funkcja ma zwracać większą wartość spośród tych, na które wskazująnum1
inum2
. Utwórz przypadek testowy.Napisz funkcję
initInts
, która nie przyjmuje argumentów i rezerwuje blok trzech zmiennych typuint
, ustawiając ich wartości kolejno na 5, -12, 33. Funkcja zwraca wskaźnik na środkową zmienną. Utwórz przypadek testowy w funkcjimain
, który wyświetla wartości z bloku stworzonego przez funkcję.Napisz funkcję
initFloats
, która nie przyjmuje argumentów i rezerwuje blok trzech zmiennych typufloat
, ustawiając ich wartości kolejno na 4.5, 2.3, -4.2. Funkcja zwraca wskaźnik na początkową ze zmiennych w bloku. Utwórz przypadek testowy w funkcjimain
, który wyświetla wartości z bloku stworzonego przez funkcję.Napisz funkcję
initFlts
, która nie przyjmuje argumentów i rezerwuje blok czterech zmiennych typufloat
, ustawiając ich wartości kolejno na 0.5, 1.5, 2.5, i 3.5. Funkcja zwraca wskaźnik na ostatnią zmienną w bloku. Utwórz przypadek testowy wmain
, aby wyświetlić wartości z bloku stworzonego przez funkcję.Napisz funkcję
sumToPtr
z trzema argumentami: dwoma wskaźnikami na stałe typuint
i wskaźnikiem na zmienną typuint
. Funkcja ma przepisać do zmiennej wskazywanej przez trzeci argument sumę wartości stałych wskazywanych przez pierwszy i drugi argument. Utwórz przypadek testowy.Napisz funkcję
sqrCopy
z dwoma argumentami: wskaźnikiem na stałą typuint
i wskaźnikiem na zmienną typuint
. Funkcja ma przepisać kwadrat wartości stałej do zmiennej wskazywanej przez drugi argument. Utwórz przypadek testowy.Napisz funkcję
subPtrs
z dwoma argumentami: wskaźnikiemnum1
na stałą wartość typudouble
i stałym wskaźnikiemnum2
na zmienną typudouble
. Funkcja ma zwracać różnicę wartości, na które wskazująnum1
inum2
. Utwórz przypadek testowy.Napisz funkcję
sumSqrs
z dwoma argumentami: wskaźnikiemnum1
na stałą wartość typuint
i stałym wskaźnikiemnum2
na zmienną typuint
. Funkcja ma zwracać sumę kwadratów wartości wskazywanych przeznum1
inum2
. Utwórz przypadek testowy.Napisz funkcję
linFuncVal
z trzema argumentami: wskaźnikiema
na stałą wartość typufloat
, stałym wskaźnikiemb
na zmienną typufloat
, i wskaźnikiemx
na stałą wartość typufloat
. Funkcja ma obliczać i zwracać wartość funkcji liniowejy=ax+b
dla argumentux
, gdziea
ib
są wskazywane przez odpowiednie wskaźniki. Utwórz przypadek testowy.Napisz funkcję
minPtr
z trzema argumentami, które są wskaźnikami na zmienne typuint
. Funkcja zwraca wskaźnik na zmienną o najmniejszej wartości spośród tych, na które wskazują argumenty. Utwórz przypadek testowy wmain
, aby wyświetlić najmniejszą wartość spośród trzech zmiennych.Napisz funkcję
multPtrs
z dwoma argumentami: wskaźnikiemnum1
na stałą wartość typudouble
i stałym wskaźnikiemnum2
na zmienną typudouble
. Funkcja zwraca iloczyn wartości wskazywanych przez te wskaźniki. Utwórz przypadek testowy.Napisz funkcję
absVal
z jednym argumentem, którym jest wskaźnik na zmienną typuint
. Funkcja oblicza wartość bezwzględną zmiennej wskazywanej przez wskaźnik i aktualizuje tę zmienną. Utwórz przypadek testowy wmain
, aby wyświetlić wartość zaktualizowanej zmiennej.Napisz funkcję
swap
z dwoma argumentami: wskaźnikiemptr1
na zmienną typuint
i wskaźnikiemptr2
na inną zmienną tego samego typu. Funkcja zamienia miejscami wartości wskazywane przez wskaźniki. Utwórz przypadek testowy.Napisz funkcję
swapSign
z dwoma argumentami: wskaźnikiemptr1
na zmienną typudouble
i wskaźnikiemptr2
na inną zmienną tego samego typu. Funkcja zamienia miejscami wartości wskazywane przez wskaźniki, jeśli mają one różne znaki. W przeciwnym razie nie robi nic. Utwórz przypadek testowy.