Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17"

Transkrypt

1 Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca / 17

2 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8 marca / 17

3 Wskaźniki Korzyści płynące ze wskaźników: (Wykład 2) Wskaźniki 8 marca / 17

4 Wskaźniki Korzyści płynące ze wskaźników: wskaźniki umożliwiają funkcjom modyfikowanie swoich argumentów, (Wykład 2) Wskaźniki 8 marca / 17

5 Wskaźniki Korzyści płynące ze wskaźników: wskaźniki umożliwiają funkcjom modyfikowanie swoich argumentów, wskaźniki są podstawą dynamicznej alokacji pamięci, (Wykład 2) Wskaźniki 8 marca / 17

6 Wskaźniki Korzyści płynące ze wskaźników: wskaźniki umożliwiają funkcjom modyfikowanie swoich argumentów, wskaźniki są podstawą dynamicznej alokacji pamięci, wskaźniki umożliwiają realizację dynamicznych struktur danych: listy, drzewa, itp, (Wykład 2) Wskaźniki 8 marca / 17

7 Wskaźniki Korzyści płynące ze wskaźników: wskaźniki umożliwiają funkcjom modyfikowanie swoich argumentów, wskaźniki są podstawą dynamicznej alokacji pamięci, wskaźniki umożliwiają realizację dynamicznych struktur danych: listy, drzewa, itp, wskaźniki pozwalają poprawić efektywność działania wielu procedur. (Wykład 2) Wskaźniki 8 marca / 17

8 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. (Wykład 2) Wskaźniki 8 marca / 17

9 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. (Wykład 2) Wskaźniki 8 marca / 17

10 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. Ogólna postać deklaracji wskaźnika: typ *nazwa; (Wykład 2) Wskaźniki 8 marca / 17

11 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. Ogólna postać deklaracji wskaźnika: typ *nazwa; Operator & zwraca adres w pamięci następującego po nim operandu. (Wykład 2) Wskaźniki 8 marca / 17

12 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. Ogólna postać deklaracji wskaźnika: typ *nazwa; Operator & zwraca adres w pamięci następującego po nim operandu. Operator * zwraca wartość zmiennej, znajdującej się pod adresem następującyn po operandzie. (Wykład 2) Wskaźniki 8 marca / 17

13 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. Ogólna postać deklaracji wskaźnika: typ *nazwa; Operator & zwraca adres w pamięci następującego po nim operandu. Operator * zwraca wartość zmiennej, znajdującej się pod adresem następującyn po operandzie. Na wskaźnikach można wykonywać tylko dwie operacje arytmetyczne: dodawanie i odejmowanie. (Wykład 2) Wskaźniki 8 marca / 17

14 Wskaźniki Wskaźnik to zmienna przechowująca adres innej zmiennej. Adres zmiennej to informacja o jej fizycznej lokalizacji w pamięci programu. Ogólna postać deklaracji wskaźnika: typ *nazwa; Operator & zwraca adres w pamięci następującego po nim operandu. Operator * zwraca wartość zmiennej, znajdującej się pod adresem następującyn po operandzie. Na wskaźnikach można wykonywać tylko dwie operacje arytmetyczne: dodawanie i odejmowanie. Operacje wskaźnikowe wykonywane są z uwzględnieniem typu podstawowego wskaźnika. (Wykład 2) Wskaźniki 8 marca / 17

15 Tablice i adresy - arytmetyka wskaźników # define SIZE 8 int itab [ SIZE ], * pit = itab ; // int * pit =& itab [0]; double dtab [ SIZE ], * pdt = dtab ; printf (" %18 s %15 s\n", " int ", " double "); for ( int i = 0; i < SIZE ; i ++) // gnu11 printf (" wsk + %d %10 p %10 p\n",i,pit +i,pdt +i); (Wykład 2) Wskaźniki 8 marca / 17

16 Tablice i adresy - arytmetyka wskaźników # define SIZE 8 int itab [ SIZE ], * pit = itab ; // int * pit =& itab [0]; double dtab [ SIZE ], * pdt = dtab ; printf (" %18 s %15 s\n", " int ", " double "); for ( int i = 0; i < SIZE ; i ++) // gnu11 printf (" wsk + %d %10 p %10 p\n",i,pit +i,pdt +i); int double wsk + 0 : 0x7fff36430c60 0x7fff36430c10 wsk + 1 : 0x7fff36430c64 0x7fff36430c18 wsk + 2 : 0x7fff36430c68 0x7fff36430c20 wsk + 3 : 0x7fff36430c6c 0x7fff36430c28 wsk + 4 : 0x7fff36430c70 0x7fff36430c30 wsk + 5 : 0x7fff36430c74 0x7fff36430c38 wsk + 6 : 0x7fff36430c78 0x7fff36430c40 wsk + 7 : 0x7fff36430c7c 0x7fff36430c48 (Wykład 2) Wskaźniki 8 marca / 17

17 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: (Wykład 2) Wskaźniki 8 marca / 17

18 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: określenie rozmiaru tablicy, (Wykład 2) Wskaźniki 8 marca / 17

19 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: określenie rozmiaru tablicy, uzyskanie adresu pierwszego elementu tablicy (o indeksie zerowym). (Wykład 2) Wskaźniki 8 marca / 17

20 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: określenie rozmiaru tablicy, uzyskanie adresu pierwszego elementu tablicy (o indeksie zerowym). Wszystkie pozostałe operacje są w istocie realizowane na wskaźnikach, nawet jeśli zapis sugeruje co innego, np. tab[i]. (Wykład 2) Wskaźniki 8 marca / 17

21 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: określenie rozmiaru tablicy, uzyskanie adresu pierwszego elementu tablicy (o indeksie zerowym). Wszystkie pozostałe operacje są w istocie realizowane na wskaźnikach, nawet jeśli zapis sugeruje co innego, np. tab[i]. W języku C nazwa tab odnosi się do adresu elementu tablicy tab[] o indeksie zero w każdym kontekście, z wyjątkiem jednego, kiedy to występuje jako argument operatora sizeof. (Wykład 2) Wskaźniki 8 marca / 17

22 Czym są tablice? W języku C dla tablic przewidziano tylko 2 operacje: określenie rozmiaru tablicy, uzyskanie adresu pierwszego elementu tablicy (o indeksie zerowym). Wszystkie pozostałe operacje są w istocie realizowane na wskaźnikach, nawet jeśli zapis sugeruje co innego, np. tab[i]. W języku C nazwa tab odnosi się do adresu elementu tablicy tab[] o indeksie zero w każdym kontekście, z wyjątkiem jednego, kiedy to występuje jako argument operatora sizeof. Zapis sizeof tab - reprezentuje rozmiar całej tablicy, a nie rozmiar wskaźnika jednego z jej elementów. (Wykład 2) Wskaźniki 8 marca / 17

23 Czym są tablice? int tab[100]; *tab = 18 - przypisujemy wartość elementowi o indeksie 0. (Wykład 2) Wskaźniki 8 marca / 17

24 Czym są tablice? int tab[100]; *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. (Wykład 2) Wskaźniki 8 marca / 17

25 Czym są tablice? int tab[100]; *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. *(tab + 5) = 18 - działa tak samo jak *(5 + tab) = 18. (Wykład 2) Wskaźniki 8 marca / 17

26 Czym są tablice? int tab[100]; *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. *(tab + 5) = 18 - działa tak samo jak *(5 + tab) = 18. tab[5] = 18 - przypisujemy wartość elementowi o indeksie 5. (Wykład 2) Wskaźniki 8 marca / 17

27 Czym są tablice? int tab[100]; *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. *(tab + 5) = 18 - działa tak samo jak *(5 + tab) = 18. tab[5] = 18 - przypisujemy wartość elementowi o indeksie 5. tab[5] = 18 - działa tak samo jak 5[tab]=18. (Wykład 2) Wskaźniki 8 marca / 17

28 Czym są tablice? int tab[100]; *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. *(tab + 5) = 18 - działa tak samo jak *(5 + tab) = 18. tab[5] = 18 - przypisujemy wartość elementowi o indeksie 5. tab[5] = 18 - działa tak samo jak 5[tab]=18. Notacja 5[tab] = 18 - działa, ale nie powinna być stosowana. (Wykład 2) Wskaźniki 8 marca / 17

29 Czym są tablice? int tab[100]; *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. *(tab + 5) = 18 - działa tak samo jak *(5 + tab) = 18. tab[5] = 18 - przypisujemy wartość elementowi o indeksie 5. tab[5] = 18 - działa tak samo jak 5[tab]=18. Notacja 5[tab] = 18 - działa, ale nie powinna być stosowana. Wyrażenie X[Y] jest równoważne wyrażeniu *(X+Y). (Wykład 2) Wskaźniki 8 marca / 17

30 Czym są tablice? int tab[100]; *tab = 18 - przypisujemy wartość elementowi o indeksie 0. *(tab + 5) = 18 - przypisujemy wartość elementowi o indeksie 5. *(tab + 5) = 18 - działa tak samo jak *(5 + tab) = 18. tab[5] = 18 - przypisujemy wartość elementowi o indeksie 5. tab[5] = 18 - działa tak samo jak 5[tab]=18. Notacja 5[tab] = 18 - działa, ale nie powinna być stosowana. Wyrażenie X[Y] jest równoważne wyrażeniu *(X+Y). Wyrażenie &X[Y] jest równoważne wyrażeniu X+Y. (Wykład 2) Wskaźniki 8 marca / 17

31 Tablice i wskaźniki char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. (Wykład 2) Wskaźniki 8 marca / 17

32 Tablice i wskaźniki char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. Deklaracja char tab[6] przydziela miejsce na 6 znaków i wiąże ten obszar z nazwą tab. (Wykład 2) Wskaźniki 8 marca / 17

33 Tablice i wskaźniki char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. Deklaracja char tab[6] przydziela miejsce na 6 znaków i wiąże ten obszar z nazwą tab. Deklaracja char *p przydziela miejsce na 1 wskaźnik. Wskaźnik może wskazywać: (Wykład 2) Wskaźniki 8 marca / 17

34 Tablice i wskaźniki char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. Deklaracja char tab[6] przydziela miejsce na 6 znaków i wiąże ten obszar z nazwą tab. Deklaracja char *p przydziela miejsce na 1 wskaźnik. Wskaźnik może wskazywać: na pojedynczą zmienną typu char, (Wykład 2) Wskaźniki 8 marca / 17

35 Tablice i wskaźniki char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. Deklaracja char tab[6] przydziela miejsce na 6 znaków i wiąże ten obszar z nazwą tab. Deklaracja char *p przydziela miejsce na 1 wskaźnik. Wskaźnik może wskazywać: na pojedynczą zmienną typu char, na dowolny indeks w tablicy typu char, (Wykład 2) Wskaźniki 8 marca / 17

36 Tablice i wskaźniki char tab[] i char *p to to samo tylko w przypadku parametrów formalnych funkcji. Deklaracja char tab[6] przydziela miejsce na 6 znaków i wiąże ten obszar z nazwą tab. Deklaracja char *p przydziela miejsce na 1 wskaźnik. Wskaźnik może wskazywać: na pojedynczą zmienną typu char, na dowolny indeks w tablicy typu char, nigdzie - wskaźnik pusty. (Wykład 2) Wskaźniki 8 marca / 17

37 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; (Wykład 2) Wskaźniki 8 marca / 17

38 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; tab: 'h' 'e' 'l' 'l' 'o' '\0' (Wykład 2) Wskaźniki 8 marca / 17

39 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; tab: 'h' 'e' 'l' 'l' 'o' '\0' p: 'w' 'o' 'r' 'l' 'd' '\0' (Wykład 2) Wskaźniki 8 marca / 17

40 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; tab: 'h' 'e' 'l' 'l' 'o' '\0' p: 'w' 'o' 'r' 'l' 'd' '\0' Jak przetłumaczyć x[3]??? (Wykład 2) Wskaźniki 8 marca / 17

41 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; tab: 'h' 'e' 'l' 'l' 'o' '\0' p: 'w' 'o' 'r' 'l' 'd' '\0' Jak przetłumaczyć x[3]??? tab[3] - weź adres tablicy tab dodaj do niego 3 i pobierz znak, (Wykład 2) Wskaźniki 8 marca / 17

42 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; tab: 'h' 'e' 'l' 'l' 'o' '\0' p: 'w' 'o' 'r' 'l' 'd' '\0' Jak przetłumaczyć x[3]??? tab[3] - weź adres tablicy tab dodaj do niego 3 i pobierz znak, p[3] - weź adres wskaźnika p, pobierz jego wartość, dodaj do niej 3 i pobierz znak. Gdzie znajduje się x[3]??? (Wykład 2) Wskaźniki 8 marca / 17

43 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; tab: 'h' 'e' 'l' 'l' 'o' '\0' p: 'w' 'o' 'r' 'l' 'd' '\0' Jak przetłumaczyć x[3]??? tab[3] - weź adres tablicy tab dodaj do niego 3 i pobierz znak, p[3] - weź adres wskaźnika p, pobierz jego wartość, dodaj do niej 3 i pobierz znak. Gdzie znajduje się x[3]??? tab[3] - znak odległy o 3 miejsca od początku obiektu o nazwie tab, (Wykład 2) Wskaźniki 8 marca / 17

44 Tablice i wskaźniki Przykład: char tab[]= hello ; char *p = world ; tab: 'h' 'e' 'l' 'l' 'o' '\0' p: 'w' 'o' 'r' 'l' 'd' '\0' Jak przetłumaczyć x[3]??? tab[3] - weź adres tablicy tab dodaj do niego 3 i pobierz znak, p[3] - weź adres wskaźnika p, pobierz jego wartość, dodaj do niej 3 i pobierz znak. Gdzie znajduje się x[3]??? tab[3] - znak odległy o 3 miejsca od początku obiektu o nazwie tab, p[3] - znak odległy o 3 miejsca od obiektu wskazywanego przez p. (Wykład 2) Wskaźniki 8 marca / 17

45 Przekazywanie tablic do funkcji W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. (Wykład 2) Wskaźniki 8 marca / 17

46 Przekazywanie tablic do funkcji W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. Do funkcji można przekazać tylko i wyłącznie adres do pierwszego elementu tablicy, podając nazwę tablicy bez indeksu. (Wykład 2) Wskaźniki 8 marca / 17

47 Przekazywanie tablic do funkcji W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. Do funkcji można przekazać tylko i wyłącznie adres do pierwszego elementu tablicy, podając nazwę tablicy bez indeksu. Przykład: int main ( void ){ int tab [10]; func ( tab ); return 0; } (Wykład 2) Wskaźniki 8 marca / 17

48 Przekazywanie tablic do funkcji W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. Do funkcji można przekazać tylko i wyłącznie adres do pierwszego elementu tablicy, podając nazwę tablicy bez indeksu. Przykład: int main ( void ){ int tab [10]; func ( tab ); return 0; } 3 sposoby deklaracji funkcji func(): void func ( int *x); void func ( int x [10]) ; void func ( int x []) ; (Wykład 2) Wskaźniki 8 marca / 17

49 Przekazywanie tablic do funkcji W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. Do funkcji można przekazać tylko i wyłącznie adres do pierwszego elementu tablicy, podając nazwę tablicy bez indeksu. Przykład: int main ( void ){ int tab [10]; func ( tab ); return 0; } 3 sposoby deklaracji funkcji func(): void func ( int *x); void func ( int x [10]) ; void func ( int x []) ; Wewnątrz funkcji func() wyrażenie sizeof x zwraca rozmiar wskaźnika, a nie tablicy. (Wykład 2) Wskaźniki 8 marca / 17

50 Przekazywanie tablic do funkcji W języku C nie można (i nie trzeba) przekazać do funkcji całej tablicy. Do funkcji można przekazać tylko i wyłącznie adres do pierwszego elementu tablicy, podając nazwę tablicy bez indeksu. Przykład: int main ( void ){ int tab [10]; func ( tab ); return 0; } Wewnątrz funkcji func() wyrażenie sizeof x zwraca rozmiar wskaźnika, a nie tablicy. Rozmiar tablicy musimy przekazać jawnie: void func ( int *x, int roz ); void func ( int x [10], int roz ); void func ( int x[], int roz ); (Wykład 2) Wskaźniki 8 marca / 17

51 Modyfikatory dostępu dla tablic (C99) Standard C99 pozwala na użycie słowa kluczowego static wewnątrz nawiasów w deklaracji tablicy, jeśli występuje jako parametr funkcji. (Wykład 2) Wskaźniki 8 marca / 17

52 Modyfikatory dostępu dla tablic (C99) Standard C99 pozwala na użycie słowa kluczowego static wewnątrz nawiasów w deklaracji tablicy, jeśli występuje jako parametr funkcji. Przykład: int fun ( char str [ static 80]) {... } Słowo kluczowe static informuje kompilator, że tablica wskazywana przez parametr str będzie zawierała co najmniej określoną (80) liczbę elementów. (Wykład 2) Wskaźniki 8 marca / 17

53 Przekazywanie tablic do funkcji - przykład # define SIZE 10 int sump ( int * start, int * end ) { int total = 0; while ( start < end ) total += * start ++; } return total ; (Wykład 2) Wskaźniki 8 marca / 17

54 Przekazywanie tablic do funkcji - przykład # define SIZE 10 int sump ( int * start, int * end ) { int total = 0; while ( start < end ) total += * start ++; } return total ; int tab [ SIZE ] = {20,10,5,39,4,16,19,26,31,20}; int sum = sump ( tab, tab + SIZE ); (Wykład 2) Wskaźniki 8 marca / 17

55 Dynamiczna alokacja pamięci - stdlib.h Dynamiczna alokacja pamięci to sposób, w jaki działający program uzyskuje dodatkową pamięć, której ilości nie można określić przed jego uruchomieniem. (Wykład 2) Wskaźniki 8 marca / 17

56 Dynamiczna alokacja pamięci - stdlib.h Dynamiczna alokacja pamięci to sposób, w jaki działający program uzyskuje dodatkową pamięć, której ilości nie można określić przed jego uruchomieniem. Dynamiczna alokacja pamięci umożliwia tworzenie dynamicznych(abstrakcyjnych) struktur danych. (Wykład 2) Wskaźniki 8 marca / 17

57 Dynamiczna alokacja pamięci - stdlib.h Dynamiczna alokacja pamięci to sposób, w jaki działający program uzyskuje dodatkową pamięć, której ilości nie można określić przed jego uruchomieniem. Dynamiczna alokacja pamięci umożliwia tworzenie dynamicznych(abstrakcyjnych) struktur danych. Funkcje dynamicznej alokacji pamięci przydzielają pamięć ze sterty. (Wykład 2) Wskaźniki 8 marca / 17

58 Dynamiczna alokacja pamięci - stdlib.h Dynamiczna alokacja pamięci to sposób, w jaki działający program uzyskuje dodatkową pamięć, której ilości nie można określić przed jego uruchomieniem. Dynamiczna alokacja pamięci umożliwia tworzenie dynamicznych(abstrakcyjnych) struktur danych. Funkcje dynamicznej alokacji pamięci przydzielają pamięć ze sterty. Rozmiar sterty z reguły jest dość duży, jednak ograniczony i pamięć ze sterty może się wyczerpać. (Wykład 2) Wskaźniki 8 marca / 17

59 Dynamiczna alokacja pamięci - stdlib.h void *malloc(size t size); - przydziela blok pamięci o rozmiarze size, nie inicjalizując go. Funkcja zwraca adres bloku, a w przypadku niepowodzenia NULL. (Wykład 2) Wskaźniki 8 marca / 17

60 Dynamiczna alokacja pamięci - stdlib.h void *malloc(size t size); - przydziela blok pamięci o rozmiarze size, nie inicjalizując go. Funkcja zwraca adres bloku, a w przypadku niepowodzenia NULL. void *calloc(size t n, size t size); - przydziela miejsce dla tablicy n elementów każdy o rozmiarze size, wszystkie bity w rezerwowanym obszarze otrzymują wartość 0. Funkcja zwraca adres bloku, a w przypadku niepowodzenia NULL. (Wykład 2) Wskaźniki 8 marca / 17

61 Dynamiczna alokacja pamięci - stdlib.h void *malloc(size t size); - przydziela blok pamięci o rozmiarze size, nie inicjalizując go. Funkcja zwraca adres bloku, a w przypadku niepowodzenia NULL. void *calloc(size t n, size t size); - przydziela miejsce dla tablicy n elementów każdy o rozmiarze size, wszystkie bity w rezerwowanym obszarze otrzymują wartość 0. Funkcja zwraca adres bloku, a w przypadku niepowodzenia NULL. void free(void *ptr); - zwalnia obszar pamięci wskazywany przez ptr, ptr - powinien być wartością zwróconą wcześniej przez malloc(), calloc() lub realloc(). (Wykład 2) Wskaźniki 8 marca / 17

62 Dynamiczna alokacja pamięci - stdlib.h void *malloc(size t size); - przydziela blok pamięci o rozmiarze size, nie inicjalizując go. Funkcja zwraca adres bloku, a w przypadku niepowodzenia NULL. void *calloc(size t n, size t size); - przydziela miejsce dla tablicy n elementów każdy o rozmiarze size, wszystkie bity w rezerwowanym obszarze otrzymują wartość 0. Funkcja zwraca adres bloku, a w przypadku niepowodzenia NULL. void free(void *ptr); - zwalnia obszar pamięci wskazywany przez ptr, ptr - powinien być wartością zwróconą wcześniej przez malloc(), calloc() lub realloc(). free(null) nie powoduje żadnej akcji, nie trzeba sprawdzać czy adres jest różny od NULL przed wywołaniem free. (Wykład 2) Wskaźniki 8 marca / 17

63 stdlib.h - malloc int *p = malloc (50 * sizeof ( int )); if (!p){ printf (" Brak pamieci \n"); // wyjscie awaryjne // return ; lub return x; // lub exit ( -1); }... free (p); (Wykład 2) Wskaźniki 8 marca / 17

64 stdlib.h - malloc int *p = malloc (50 * sizeof ( int )); if (!p){ printf (" Brak pamieci \n"); // wyjscie awaryjne // return ; lub return x; // lub exit ( -1); }... free (p); W języku C nie rzutujemy adresu zwracanego przez malloc(). (Wykład 2) Wskaźniki 8 marca / 17

65 stdlib.h - malloc int *p = malloc (50 * sizeof ( int )); if (!p){ printf (" Brak pamieci \n"); // wyjscie awaryjne // return ; lub return x; // lub exit ( -1); }... free (p); W języku C nie rzutujemy adresu zwracanego przez malloc(). Rzutowanie konieczne było w latach 70 i 80 kiedy malloc() zwracał char*. (Wykład 2) Wskaźniki 8 marca / 17

66 stdlib.h - malloc int *p = malloc (50 * sizeof ( int )); if (!p){ printf (" Brak pamieci \n"); // wyjscie awaryjne // return ; lub return x; // lub exit ( -1); }... free (p); W języku C nie rzutujemy adresu zwracanego przez malloc(). Rzutowanie konieczne było w latach 70 i 80 kiedy malloc() zwracał char*. Dla dowolnego typu: typ *p = malloc (n * sizeof ( typ )); (Wykład 2) Wskaźniki 8 marca / 17

67 stdlib.h - realloc void *realloc(void *ptr, size t size); - zmienia rozmiar bloku pamięci wskazywanego przez ptr na size. (Wykład 2) Wskaźniki 8 marca / 17

68 stdlib.h - realloc void *realloc(void *ptr, size t size); - zmienia rozmiar bloku pamięci wskazywanego przez ptr na size. Dotychczasowa zawartość bloku pamięci pozostaje niezmieniona, ale może zostać skrócona, jeśli nowy rozmiar jest mniejszy niż poprzedni. (Wykład 2) Wskaźniki 8 marca / 17

69 stdlib.h - realloc void *realloc(void *ptr, size t size); - zmienia rozmiar bloku pamięci wskazywanego przez ptr na size. Dotychczasowa zawartość bloku pamięci pozostaje niezmieniona, ale może zostać skrócona, jeśli nowy rozmiar jest mniejszy niż poprzedni. Jeżeli przydzielenie miejsca było niemożliwe, to funkcja zwraca NULL i pozostawia pierwotny blok bez zmian. (Wykład 2) Wskaźniki 8 marca / 17

70 stdlib.h - realloc void *realloc(void *ptr, size t size); - zmienia rozmiar bloku pamięci wskazywanego przez ptr na size. Dotychczasowa zawartość bloku pamięci pozostaje niezmieniona, ale może zostać skrócona, jeśli nowy rozmiar jest mniejszy niż poprzedni. Jeżeli przydzielenie miejsca było niemożliwe, to funkcja zwraca NULL i pozostawia pierwotny blok bez zmian. Przykład. int * tab = malloc ( SIZE * sizeof ( int ));... tab = realloc (tab,( SIZE -A)* sizeof ( int ));... tab = realloc (tab,( SIZE +A)* sizeof ( int ));... free ( tab ); (Wykład 2) Wskaźniki 8 marca / 17

71 stdlib.h - realloc void *realloc(void *ptr, size t size); - zmienia rozmiar bloku pamięci wskazywanego przez ptr na size. Dotychczasowa zawartość bloku pamięci pozostaje niezmieniona, ale może zostać skrócona, jeśli nowy rozmiar jest mniejszy niż poprzedni. Jeżeli przydzielenie miejsca było niemożliwe, to funkcja zwraca NULL i pozostawia pierwotny blok bez zmian. Przykład. int * tab = malloc ( SIZE * sizeof ( int ));... tab = realloc (tab,( SIZE -A)* sizeof ( int ));... tab = realloc (tab,( SIZE +A)* sizeof ( int ));... free ( tab ); realloc(null, size) jest równoważne malloc(size). (Wykład 2) Wskaźniki 8 marca / 17

72 stdlib.h - realloc void *realloc(void *ptr, size t size); - zmienia rozmiar bloku pamięci wskazywanego przez ptr na size. Dotychczasowa zawartość bloku pamięci pozostaje niezmieniona, ale może zostać skrócona, jeśli nowy rozmiar jest mniejszy niż poprzedni. Jeżeli przydzielenie miejsca było niemożliwe, to funkcja zwraca NULL i pozostawia pierwotny blok bez zmian. Przykład. int * tab = malloc ( SIZE * sizeof ( int ));... tab = realloc (tab,( SIZE -A)* sizeof ( int ));... tab = realloc (tab,( SIZE +A)* sizeof ( int ));... free ( tab ); realloc(null, size) jest równoważne malloc(size). realloc(ptr, 0) jest równoważne free(ptr). (Wykład 2) Wskaźniki 8 marca / 17

Tablice, funkcje, wskaźniki - wprowadzenie

Tablice, funkcje, wskaźniki - wprowadzenie Tablice, funkcje, wskaźniki - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 4 19 listopada 2018 (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada 2018 1 / 37 Outline 1 Tablice

Bardziej szczegółowo

Wskaźniki. Przemysław Gawroński D-10, p Wykład 1. (Wykład 1) Wskaźniki / 9

Wskaźniki. Przemysław Gawroński D-10, p Wykład 1. (Wykład 1) Wskaźniki / 9 Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 1 01.04.2019 (Wykład 1) Wskaźniki 01.04.2019 1 / 9 Outline 1 Literatura 2 Programowanie proceduralne - zarządzanie pamięcią 3 Wskaźniki 4 Tablice a wskaźniki

Bardziej szczegółowo

Tablice, funkcje - wprowadzenie

Tablice, funkcje - wprowadzenie Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie

Bardziej szczegółowo

Języki i metodyka programowania. Wskaźniki i tablice.

Języki i metodyka programowania. Wskaźniki i tablice. Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana

Bardziej szczegółowo

Podstawy programowania komputerów

Podstawy programowania komputerów Podstawy programowania komputerów Wykład 10: Sterowanie pamięcią w C Pamięć na stosie!każdy program napisany w języku C ma dostęp do dwóch obszarów pamięci - stosu i sterty, w których może być przechowywana

Bardziej szczegółowo

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom). Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154

Bardziej szczegółowo

Wskaźniki w C. Anna Gogolińska

Wskaźniki w C. Anna Gogolińska Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik

Bardziej szczegółowo

KURS C/C++ WYKŁAD 6. Wskaźniki

KURS C/C++ WYKŁAD 6. Wskaźniki Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

Wskaźniki. Programowanie Proceduralne 1

Wskaźniki. Programowanie Proceduralne 1 Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres

Bardziej szczegółowo

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury, , Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer

Bardziej szczegółowo

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Język ANSI C. część 11. Jarosław Gramacki Instytut Informatyki i Elektroniki

Język ANSI C. część 11. Jarosław Gramacki Instytut Informatyki i Elektroniki Wpisy zaliczeń: 18.02.2011, godz. 12:00, sala 503 Język ANSI C część 11 tablice 2D, alokacja pamięci Jarosław Gramacki Instytut Informatyki i Elektroniki Było: Alokacja pamięci, stos i sterta Stałe, zmienne

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Uzupełnienie dot. przekazywania argumentów

Uzupełnienie dot. przekazywania argumentów Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;

Bardziej szczegółowo

Stałe, tablice dynamiczne i wielowymiarowe

Stałe, tablice dynamiczne i wielowymiarowe Stałe, tablice dynamiczne i wielowymiarowe tylko do odczytu STAŁE - CONST tablice: const int dni_miesiaca[12]=31,28,31,30,31,30,31,31,30,31,30,31; const słowo kluczowe const sprawia, że wartość zmiennej

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Wstęp do wskaźników w języku ANSI C

Wstęp do wskaźników w języku ANSI C Wstęp do wskaźników w języku ANSI C / Materiał dydaktyczny pomocniczy do przedmiotu Informatyka sem.iii kier. Elektrotechnika/ 1. Wprowadzenie W języku ANSI C dla każdego typu X (wbudowanego, pochodnego,

Bardziej szczegółowo

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

// Liczy srednie w wierszach i kolumnach tablicy dwuwymiarowej // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib. Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy

Bardziej szczegółowo

4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu.

4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu. Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 6. Tablice znakowe o dwóch indeksach, przekazywanie tablic do funkcji cd., dynamiczna alokacja pamięci, funkcje przetwarzające ciągi

Bardziej szczegółowo

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)

Bardziej szczegółowo

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37 Programowanie w C++ Wykład 4 Katarzyna Grzelak 19 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37 Funkcje cd K.Grzelak (Wykład 1) Programowanie w C++ 2 / 37 Funkcja powtórzenie Funkcje == podprogramy

Bardziej szczegółowo

Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci.

Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci. 1. Tablice dynamiczne Początkowa zadeklarowana wielkość tablicy czasami może okazać niewystarczająca, lub nadmierna. Dynamiczna alokacja pamięci wykorzystywana jest w celu otrzymania bądź zwolnienia pamięci

Bardziej szczegółowo

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia Język ANSI C część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia najbardziej podstawowe operacje na wskaźnikach int x = 1, y = 2, Tab[10]; int *ip; // czy

Bardziej szczegółowo

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty. Funkcje. Deklaracja funkcji: KURS C/C++ WYKŁAD 8 #include //deklaracje funkcji: printf(...), scanf(...) #include //double sqrt (double ) #include //void clrscr (void) void main

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

Język ANSI C tablice wielowymiarowe

Język ANSI C tablice wielowymiarowe Język ANSI C tablice wielowymiarowe Gdy tablica wielowymiarowa jest parametrem funkcji, to w standardzie ANSI C konieczne jest podanie wszystkich wymiarów poza pierwszym. Przykład. Napisać program wczytujący

Bardziej szczegółowo

Struktury czyli rekordy w C/C++

Struktury czyli rekordy w C/C++ Struktury czyli rekordy w C/C++ Wprowadzenie do programowania w języku C struktury. pola bitowe, unie Struktury (rekordy) są złożonymi zmiennymi, składającymi się z elementów różnych typów zwanych polami,

Bardziej szczegółowo

Wprowadzenie do programowania w języku C

Wprowadzenie do programowania w języku C Wprowadzenie do programowania w języku C Część szósta Zmienne wskaźnikowe koncepcja, zastosowania, sztuczki i triki Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk

Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk Informatyka Wy-03 Dynamiczna alokacja pamięci, wyjątki mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 13.03.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konsultacje Piątek 13:00

Bardziej szczegółowo

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie Krzysztof Banaś Podstawy programowania 1 są sposobem na przechowywanie w ramach pojedynczej zmiennej zestawu zmiennych różnych typów,

Bardziej szczegółowo

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Tablice a zmienne wskaźnikowe Nazwa tablicy jako wskaźnik na

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Techniki Programowania wskaźniki

Techniki Programowania wskaźniki Techniki Programowania wskaźniki Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Wskaźniki Dla typu T zapis T* oznacza

Bardziej szczegółowo

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017 > C++ wskaźniki Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017 >??? Co to jest WSKAŹNIK? ++ wskaźniki 2 / 20 >??? Co to jest WSKAŹNIK? To po prostu ADRES

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu

Bardziej szczegółowo

Tablice w argumentach funkcji. Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku

Tablice w argumentach funkcji. Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku Tablice w argumentach funkcji Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku Przykład: char str[] = abcdef ;... fun(str); // argument faktyczny to id

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof 1 adres zmiennej Do pobrania adresu zmiennej używa się jednoargumentowego operatora & (uwaga & może mieć także znaczenie dwuargumentowego

Bardziej szczegółowo

Spis treści JĘZYK C - WSKAŹNIKI, DYNAMICZNY PRZYDZIAŁ PAMIĘCI. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - WSKAŹNIKI, DYNAMICZNY PRZYDZIAŁ PAMIĘCI. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1D300 017 (studia stacjonarne)

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski

Bardziej szczegółowo

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1 Operatory Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1 Przypomnienie: operatory Operator przypisania = przypisanie x = y x y Operatory arytmetyczne

Bardziej szczegółowo

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami: Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład

Bardziej szczegółowo

Wykład 3 Składnia języka C# (cz. 2)

Wykład 3 Składnia języka C# (cz. 2) Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest

Bardziej szczegółowo

Bardzo szybkie podsumowanie: wykład 3

Bardzo szybkie podsumowanie: wykład 3 Bardzo szybkie podsumowanie: wykład 3 wer. 7 z drobnymi modyfikacjami! Wojciech Myszka 2019-04-02 09:08:04 +0200 Uwagi 1. Obowiązuje cały materiał! 2. Tu tylko podsumowanie. Wskaźniki. Pamięć dynamiczna

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści

Bardziej szczegółowo

Wykład 1: Wskaźniki i zmienne dynamiczne

Wykład 1: Wskaźniki i zmienne dynamiczne Programowanie obiektowe Wykład 1: Wskaźniki i zmienne dynamiczne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Podstawy programowania w C++ Wskaźniki 2 dr Artur Bartoszewski - Programowanie

Bardziej szczegółowo

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 4

Programowanie komputerowe. Zajęcia 4 Programowanie komputerowe Zajęcia 4 Typ logiczny Wartości logiczne są reprezentowane przez typ bool. Typ bool posiada tylko dwie wartości: true i false. Zamiast wartości logicznych można używać wartości

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Co to

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2) Podstawy programowania (język C) Globalne / Lokalne Wykład 15. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Zmienne globalne / lokalne (1) int A, *Q; // definicja zmiennych globalnych

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,

Bardziej szczegółowo

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst

Bardziej szczegółowo

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły

Bardziej szczegółowo

//zmienne globalne int *pa, *pb; //wskaźniki globalne void main(void) { clrscr(); printf("\n podaj wartosc liczby a\n"); scanf("%d",&a); pa=&a;

//zmienne globalne int *pa, *pb; //wskaźniki globalne void main(void) { clrscr(); printf(\n podaj wartosc liczby a\n); scanf(%d,&a); pa=&a; Ćwiczenie 4 4.1. Wskaźnik na zmienną Wskaźniki, tablice Deklaracja int *pa; oznacza, że pa jest wskaźnikiem na obiekt typu int. Zmienna pa zawiera adres pamięci, zarezerwowanej na zmienną typu int. Chcąc

Bardziej szczegółowo

Język C++ Różnice między C a C++

Język C++ Różnice między C a C++ Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci

Bardziej szczegółowo

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle! Funkcja wysoce niezależny blok definicji i instrukcji programu (podprogram) Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje

Bardziej szczegółowo

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h> Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch

Bardziej szczegółowo

Funkcja (podprogram) void

Funkcja (podprogram) void Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji

Bardziej szczegółowo

Techniki Programowania wskaźniki 2

Techniki Programowania wskaźniki 2 Techniki Programowania wskaźniki 2 Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Jeżeli wskaźnik pokazuje na element

Bardziej szczegółowo

Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 6: Dynamiczny przydział pamięci dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 15 maja 2015 1. Wprowadzenie Instrukcja poświęcona jest dynamicznemu przydziałowi i zwalnianiu pamięci w

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część jedenasta Przetwarzanie plików amorficznych Konwencja języka C Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

6 Przygotował: mgr inż. Maciej Lasota

6 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 6 1/5 Język C Instrukcja laboratoryjna Temat: Wskaźniki. 6 Przygotował: mgr inż. Maciej Lasota 1) Wskaźniki. Wskaźniki (zmienne wskaźnikowe) stanowią jedno z fundamentalnych pojęć języka

Bardziej szczegółowo

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki > C++ dynamiczna alokacja/rezerwacja/przydział pamięci Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1429536600 > Dzisiejsze zajęcia sponsorują słówka: new oraz delete

Bardziej szczegółowo

dr inż. Paweł Myszkowski Wykład nr 8 (22.04.2015)

dr inż. Paweł Myszkowski Wykład nr 8 (22.04.2015) dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2014/2015 Wykład nr 8 (22.04.2015) Plan prezentacji:

Bardziej szczegółowo

Stałe i zmienne znakowe. Stała znakowa: znak

Stałe i zmienne znakowe. Stała znakowa: znak Stałe i zmienne znakowe. Stała znakowa: znak Na przykład: a, 1, 0 c Każdy znak jest reprezentowany w pamięci przez swój kod. Kody alfanumerycznych znaków ASCII to liczby z przedziału [32, 127]. Liczby

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

Podstawy informatyki. Wykład nr 1 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Podstawy informatyki. Wykład nr 1 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc Podstawy informatyki Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne Rok akademicki 2006/2007 Wykład nr 1 (09.03.2007) Wykład nr 1 2/34 Dane podstawowe

Bardziej szczegółowo

PODSTAW PROGRAMOWANIA WYKŁAD 6 WSKAŹNIKI

PODSTAW PROGRAMOWANIA WYKŁAD 6 WSKAŹNIKI PODSTAW PROGRAMOWANIA WYKŁAD 6 WSKAŹNIKI Wskaźnik jest zmienną, która zawiera adres (wskazanie) początku dowolnego obszaru w pamięci komputera, (np. może być to adres obszaru danych lub adres kodu programu)

Bardziej szczegółowo

Podstawy programowania 1

Podstawy programowania 1 Podstawy programowania 1 Krzysztof Grudzień kgrudzi@kis.p.lodz.pl Wykład nr 2 1 Plan spotkań Wskaźniki Tablice jednowymiarowe & wska źniki. Programowanie w C. Wikibooks 2 Co to jest wskaźnik?? Wskaźnik

Bardziej szczegółowo

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne

Bardziej szczegółowo

Wskaźniki. Pamięć dynamiczna

Wskaźniki. Pamięć dynamiczna Wskaźniki. Pamięć dynamiczna wer. 8 z drobnymi modyfikacjami Wojciech Myszka 2015-04-13 11:39:01 +0200 Wskaźniki Wskaźniki to podstawa C. Kto nie umie się nimi posługiwać ten nie potrafi wykorzystać siły

Bardziej szczegółowo

Ghost in the machine

Ghost in the machine Operacje na pami eci i odrobina I/O Zak lad Chemii Teoretycznej UJ 8 stycznia 2007 Funkcje operujace Wstep do operacji I/O na plikach 1 Operacje na pami eci 2 Funkcje operujace 3 Wst Funkcje operujace

Bardziej szczegółowo

dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! )

dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! ) dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! ) 1 dynamiczny przydział pamięci void * memccpy (void * to, void * from, int c, int

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w

Bardziej szczegółowo

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1 Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne

Bardziej szczegółowo

Języki i metodyka programowania. Wprowadzenie do języka C

Języki i metodyka programowania. Wprowadzenie do języka C Literatura: Brian W. Kernighan, Dennis M. Ritchie Język Ansi C, Wydawnictwa Naukowo - Techniczne, 2007 http://cm.bell-labs.com/cm/cs/cbook/index.html Scott E. Gimpel, Clovis L. Tondo Język Ansi C. Ćwiczenia

Bardziej szczegółowo