Temat: Definiowanie i wykorzystanie funkcji oraz wst p do wska ników.
1) Definiowanie funkcji
# include <stdio.h>
# include <stdio.h>
# include <conio.h>
# include <conio.h>
char znak(void) {
float liczba(void) {
char zmienna;
float zmienna;
printf("Podaj znak=");
printf("Podaj liczbe=");
scanf("%c",&zmienna);
scanf("%f",&zmienna);
return zmienna;
return zmienna;
}
}
main() {
main() {
char zmienna;
float zmienna;
zmienna=znak();
zmienna=liczba();
printf("Wpisales
printf("Wpisales
znak=%c\n",zmienna);
liczbe=%f\n",zmienna);
getch();
getch();
return (0);
return (0);
}
}
Uwaga:
Istniej dwa sposoby przekazywania parametrów do funkcji:
• przez warto – przesyłana warto parametru
• przez referencj (adres) – przesyłany adres parametru
J zyk C i C++ przesyła parametry przez warto , z jednym wyj tkiem – tj. tablice. W przypadku tablic przesyłany jest adres pierwszego elementu tablicy.
2) Przekazywanie parametrów do funkcji poprzez warto
# include <stdio.h>
# include <conio.h>
float kwadrat(float a, float b) {
float wartosc;
wartosc=a*b;
return wartosc;
}
main() {
float a,b,zmienna;
printf("Podaj pierwsza liczbe=");
scanf("%f",&a);
printf("Podaj druga liczbe=");
scanf("%f",&b);
zmienna=kwadrat(a,b);
printf("Kwadrat liczb=%f\n",zmienna);
getch();
return (0);
}
3) Wst p do wska ników
W j zyku C dla ka dego typu T mo na okre li odpowiedzialny mu typ zmiennych zawieraj cy adres miejsc pami ci, w których znajduj si obiekty typu T. Zmienne takie mo na traktowa jako wskazuj ce obiekty – st d nazwa wska niki.
AD.1. Podstawowe informacje o wska nikach
Mówi c potocznie, wska nik to po prostu zmienna zawieraj ca adres miejsca w pami ci, w którym znajduj si jakie dane. Jednym z najlepszych sposobów zrozumienia wska ników jest ich wizualizacja na diagramach. Zamiast w diagramach pokazywa konkretne adresy, zwykle u ywa si strzałek, które mówi , co wska nik wskazuje. Kiedy wska nik nie wskazuje niczego, czyli kiedy zostanie mu przypisana warto NULL
zaznacza si to kresk zako czon podwójn kresk poprzeczn . Deklaracja wska nika jest tym samym, co zadeklarowanie ka dej innej zmiennej, jednak wymaga to dodatkowo u ycia odpowiedniego operatora.
Operatory wska ników:
* Operator wska nika lub inaczej wskazania po redniego; ułatwieniem b dzie odczytanie tego operatora jako
"warto znajduj ca si pod adresem"
& Operator adresu; ułatwieniem b dzie odczytanie tego operatora jako "adres zmiennej"
Przykładowy diagram – niektóre operacje na wska nikach
…
(1)
(2)
(3)
(4)
(5)
main() {
int a, *wsk_i, *wsk_j, *wsk_k;
a
10
a
10
a
10
a
100
a
100
…
wsk_i
wsk_i
wsk_i
wsk_i
wsk_i
(1) a=10;
wsk_j
wsk_j
wsk_j
wsk_j
wsk_j
(2) wsk_i=&a;
wsk_k
wsk_k
wsk_k
wsk_k
wsk_k
(3) wsk_j=wsk_i;
(4) *wsk_j=100;
(5) wsk_k=NULL;
…}
Materiał do opanowania:
1. Podstawowe informacje o wska nikach
2. Alokacja pami ci
3. Agregaty i arytmetyka wska ników
4. Wska niki jako parametry funkcji
5. Wska niki do wska ników
6. Wska niki ogólne i rzutowanie
7. Wska niki do funkcji
4) Przekazywanie warto ci do funkcji poprzez referencj
# include <stdio.h>
# include <conio.h>
int kwadrat(float a, float b, float *wartosc) {
if((a<0||a>9)||(b<0||b>9)) return (1);
else *wartosc=a*b;
return (0);
}
main() {
float a,b,wartosc;
printf("Podaj pierwsza liczbe=");
scanf("%f",&a);
printf("Podaj druga liczbe=");
scanf("%f",&b);
if (!kwadrat(a,b,&wartosc)) printf("Kwadrat liczb=%f\n",wartosc); else printf("Niewlasciwe liczby\n");
getch();
return (0);
}
5) Zadanie: Opracuj prosty kalkulator wykonuj cy podstawowe operacje matematyczne, np. dodawania, odejmowanie, mno enie, dzielenie, pot gowanie itp. Program powinien posiada nast puj ce elementy: 1. krótkie "menu" wyboru,
2. obliczenia w oparciu o funkcje,
3. zabezpieczenia poprawno ci wprowadzanych danych oparte na operatorach relacji, 4. odwołanie do zmiennych poprzez referencje/wska niki.
Uwaga: działania matematyczne nale y wprowadza w jednej linii, np. a+b, a-b, a*b, a/b tzn.
Podaj dzialanie:
2+2
Wynik:
4.00