Spis treści

Wskaźniki

Adres zmiennej - operator &

Operator referencji & zwraca adres zmiennej

#include<stdio.h>
 
int main()
{
   int a = 42;
   printf("adres zmiennej a %p\n", &a);
}

wsk1.c

Deklaracja zmiennej wskaźnikowej

#include<stdio.h>
 
int main()
{
   int a = 42;
   int *w;
 
   w = &a;
 
   printf("adres zmiennej a %p\n", w);
   printf("adres zmiennej a %p\n", &a);
}

wsk2.c

Dostęp do adresu - operator *

Operator dereferencji * udostępnia wartość z danego adresu

#include<stdio.h>
 
int main()
{
   int a = 42;
   int *w = &a;
 
   *w = 13;
 
   printf("a = %d\n", a);
}

wsk3.c

Wskaźnik argumentem funkcji

Adres zmiennej przekazany w argumencie funkcji pozwala tej funkcji zmodyfikować wartość wskazywanej zmiennej

#include<stdio.h>
 
void fun(int *a)
{
   *a = 42;
}
 
int main()
{
   int a = 1;
 
   fun( &a );
 
   printf("a = %d\n", a);
}

wsk4.c

Zadanie - zamiana

Zaimplementuj funkcję o nazwie zamiana, która pozwala zamienić wartości dwóch zmiennych typu float. Przetestuj działanie tej funkcji.

Zadanie - układ równań

Zaimplementuj funkcję rozwiązującą układ równań z 2 niewiadomymi.

ax + by = c
dx + ey = f

Argumenty funkcji: liczby rzeczywiste a, b, c, d, e, f defilujące układ równań oraz zmienne wskaźnikowe x, y, do których zostanie wstawiony wynik.
Wartość zwracana z funkcji: liczba całkowita równa:

Napisz program, który wczyta wartości defilujące układ równań a następnie, korzystając z powyższej funkcji, wyznaczy rozwiązanie układu równań.

Przykład działania:

Podaj wspolczynniki ukladu rownan:
3 5 17 2 -3 5 
Rozwiazanie x=4.000000, y=1.000000
Podaj wspolczynniki ukladu rownan:
-1 -1 3 1 1 -3
Uklad rownan jest nioznaczony
Podaj wspolczynniki ukladu rownan:
1 2 3 1 2 4
Uklad rownan jest sprzeczny

Zadanie - dominanta

Zaimplementuj funkcję, która zwróci dominantę oraz liczbę wystąpień dominanty z danego ciągu liczb rzeczywistych.

Argumenty funkcji: tablica t liczb rzeczywistych, liczba całkowita n określająca ilość liczb w tablicy t, wskaźnik do zmiennej x, która po zakończeniu funkcji będzie zawierała wartość dominującą z tablicy t.
Wartość zwracana z funkcji: liczba całkowita określająca ilość wystąpień dominanty

Napisz program, który wczyta z klawiatury n liczb rzeczywistych i korzystając z powyższej funkcji wyznaczy wartość dominującą a następnie wypisze wynik. Plik stat.c zawiera funkcje wczytaj i wypisz , które można użyć w zadaniu.

Przykład działania:

Ile liczb?
5
Podaj liczby:
5
-3
5
5
4
Diminanata to 5
Ilosc wystapien 3

Tablice i wskaźniki

Tablica jest zmienną wskaźnikową

#include<stdio.h>
 
int main()
{
   int t[10];
   int *p;
   int i;
 
   for( p=t; p < t+10; p++ ) *p = 42;
 
   for(i=0; i<10; i++) 
      printf("%d\n", *(t+i));
}

wsk5.c

Zadanie - Odwracanie kolejności

Zaimplementuj funkcję odwroc, która odwróci kolejność elementów w tablicy z liczbami rzeczywistymi. W implementacji tej funkcji nie używaj indeksowania tablicy za pomocą liczb całkowitych lecz użyj wyłącznie zmiennych wskaźnikowych oraz funkcji zamiana z poprzedniego zadania.

Argumenty funkcji: tablica t liczb rzeczywistych, liczba całkowita n określająca ilość liczb w tablicy t Wartość zwracana z funkcji: adres tablicy t zawierającej elementy w odwrotnej kolejności

Napisz program, który wczyta z klawiatury n liczb rzeczywistych do tablicy i korzystając z powyższej funkcji odwróci kolejność elementów a następnie wypisze wszystkie elementy tablicy. Plik stat.c zawiera funkcje wczytaj i wypisz , które można użyć w zadaniu.

Zadania domowe