Materialy pomocnicze: ______________________________________________________________________________ P.1.1 - wskaźniki #include #include int main(void) { int temp; int *wskaznik; temp = 100; printf("Liczba w zmiennej TEMP: %d\n",temp); wskaznik = &temp; // przypisujemy wskaznikowi adres zmiennej TEMP *wskaznik = 200; // pod adres wskaznika przypisujemy wartosc 200 printf("Liczba wskazywana przez wskaznik: %d\n",*wskaznik); printf("Liczba w zmiennej TEMP: %d\n", temp); return (0); } ______________________________________________________________________________ P.1.2 - wskaźniki c.d. #include int main (void) { int liczba = 65; printf("Wartosc zmiennej liczba: %d\n", liczba ); printf("Adres zmiennej liczba: %p\n", &liczba ); return 0; } ______________________________________________________________________________ P.2 - wskaźniki i tablice #include #include int main() { int tab[4]={20,40,50,100}; // nazwa tablicy jest przy okazji wskaznikiem na pierwszy element int *wsk; wsk = &tab[0]; // równoważne jest instrukcji wsk = tab; printf("Element pierwszy tablicy --> %d\n",*wsk); wsk = wsk + 1; printf("Element drugi tablicy --> %d\n",*wsk); wsk++; printf("Element trzeci tablicy --> %d\n",*wsk); wsk++; *wsk = 200; printf("Element czwarty tablicy --> %d\n",*wsk); return (0); } ______________________________________________________________________________ P.3 - wskazniki i funckje: #include #include void sum(int *k, int *l, int *s); int main() { int a,b; int suma; printf("Podaj liczbe a: "); scanf("%d",&a); printf("Podaj liczbe b: "); scanf("%d",&b); sum(&a,&b,&suma); printf("Suma: (%d + %d) = %d\n",a,b,suma); return (0); } void sum(int *k, int *l, int *s) { *s = (*k + *l); } ______________________________________________________________________________ //kod 4 - Funkcja zwracająca wskaźnik #include int *wieksza(int *a, int *b); void main() { int a = 7; int b = 77; int *p = wieksza(&a, &b); printf("%d jest wieksza",*p); } int *wieksza(int *a, int *b) { if(*a > *b) return a; else return b; } //______________________________________________________________________________ //kod 5 - Wskaźnik na wskaźnik #include int main () { int zmienna; int *ptr; int **pptr; zmienna = 66; ptr = &zmienna; //wskaźnik wskazuje na adres zmiennej pptr = &ptr; //wskaźnik wskazuje na adres wskaźnika, wskazującego na adres zmiennej printf("wartosc zmiennej: %d\n", zmienna ); printf("wartosc zmiennej na ktora wskazuje wskaznik *ptr: %d\n", *ptr ); printf("wartosc zmiennej na ktora wskazuje wskaznik na wskaznik **ptr %d\n", **pptr); return 0; } //______________________________________________________________________________ //kod 6 - malloc() i free() #include #include int main() { int *ptr; ptr = (int*)malloc(sizeof(int)); //alokacja dla jednej liczby całkowitej if (ptr==NULL) { printf("\n Przydzielenie pamiêci nie jest mo¿liwe"); return 0; } printf("Podaj wartosc zmiennej: "); scanf("%d", ptr); printf("\nWartosc to: %d", *ptr); free(ptr); printf("\nWartosc po zwolnieniu pamieci: %d", *ptr); return 0; } //______________________________________________________________________________ //kod 7 #include #include int main() { int n; int sum = 0; printf("Ile elementów chcesz sumowaæ: "); scanf("%d", &n); //alokacja dla n liczb, wielkosc zdefiniowana przez uzytkownika int *ptr = (int*)malloc(n * sizeof(int)); //dynamiczna alokacja pamiêci if(ptr == NULL) // zabezpieczenie { printf("Nie doszlo do alokacji pamiêci."); return 0; } printf("Podaj elementy: "); //wczytanie elementow i sumowanie for(int i = 0; i < n; ++i) { scanf("%d", ptr + i); sum += *(ptr + i); } printf("Suma = %d", sum); free(ptr); //zwolnienie pamieci! return 0; } //______________________________________________________________________________ //fragment kodu zadanie 2 z punktu 4 (wykład 6 slajd 24): int jakas_tablica[10]; //deklaracja tablicy int *wsk; // deklaracja wskaźnika typu int wsk = jakas_tablica; // wsk wskazuje 1-szy element wsk = &jakas_tablica[0]; // to jest dokładnie to samo // co instrukcja wcześniej wsk++; // ok, teraz wskazujemy na 2-gi element tablicy (*wsk)++; // a teraz ten 2-gi element zwiêkszamy o 1