Spis treści

Start Zajęcia 1 Zajęcia 2 Zajęcia 3 Zajęcia 4 Zajęcia 5 Zajęcia 6 Zajęcia 7 Zajęcia 8 Zajęcia 9 Zajęcia 10 Pliki z zajęć

Zajęcia 6 - Wskaźniki

Program demonstrujący użycie wskaźników

#include <stdio.h>
 
int main()
{
   int x = 100;
   char napis[] = "jezyki programowania\n";
   int tab[5] = {100, 101, 102, 103, 104};
 
   int *wsk1, *wsk2;   // tworzymy wskaznik (do) typu int
   char* wsk3;
 
   wsk1 = &x;   // przypisanie wartosci (adresu)
   printf("wsk1=&x     | x=%d   *wsk1=%d\n",x,*wsk1);
   printf("adres x     | &x=%x,   wsk1=%x\n",&x,wsk1);
   *wsk1 = 5;
   printf("*wsk1=5     | x=%d  *wsk1=%d\n",x,*wsk1);
 
   printf("tymczasem  *wsk2=%d\n",*wsk2);   
   wsk2 = wsk1;
   printf("wsk2=wsk1   | *wsk2=%d\n",*wsk2);
 
   x++;
   printf("x++         | *wsk1=%d,  *wsk2=%d, x=%d\n",*wsk1,*wsk2,x);
   (*wsk1)++;
   printf("(*wsk1)++   | *wsk1=%d,  *wsk2=%d, x=%d\n",*wsk1,*wsk2,x);
 
   wsk1 = tab;   // to samo co wsk1 = &tab[0]
   printf("teraz wsk1 pokazuje na elementy tablicy\nwsk1=tab    | *wsk1=%d,  *wsk2=%d, x=%d\n",*wsk1,*wsk2,x);
 
   wsk1 = wsk1 + 2;
   printf("wsk1=wsk1+2 | *wsk1=%d,",*wsk1);
   printf(" tab[2]=%d, *(tab+2)=%d\n",tab[2],*(tab+2));
 
   wsk3 = napis + 4;
   printf(wsk3);
 
   return 0;
}

Ćwiczenia

#include <stdio.h>
#include "tab.h"
#define MAX 100
 
int main()
{
   int n,i;
   float tablica[MAX];
   float t;
 
   printf("Podaj rozmiar tablicy: ");
   scanf("%d",&n);
 
   wczytaj(tablica,n);
 
   i = 0;
   while(i<n/2)
   {
      t = tablica[i];
      tablica[i] = tablica[n-i-1];
      tablica[n-i-1] = t;	
      i++;
   }
 
   wyswietl(tablica,n);
 
   return 0;
}

Ćwiczenie

Wskaźnik jako argumet funkcji

#include <stdio.h>
#include "tab.h"
#define MAX 100
 
void zwieksz(float *x);
float *zwieksztab(float *tab,int n);
 
int main()
{
   int n,i;
   float t,tablica[MAX];
 
   printf("Liczbe: ");   scanf("%f",&t);
   zwieksz(&t);
   zwieksz(&t);
   zwieksz(&t);
   printf("Teraz liczba wynosi %f\n",t);
 
   printf("Podaj rozmiar tablicy: ");   scanf("%d",&n);
   wczytaj(tablica,n);
 
   zwieksztab(zwieksztab(zwieksztab(tablica,n),n),n);
 
   printf("Teraz tablica wyglada tak\n");
   wyswietl(tablica,n);
}
 
void zwieksz(float *liczba)
{
   *liczba = *liczba + 1.0;
}
 
float *zwieksztab(float *tab,int n)
{
   float *wt = tab+n;
   while(wt>tab) zwieksz(--wt);
   return tab;
}

Zadania domowe