Interaktívna osnova pre IB001/10 a IB001/11

Týden 8

Prebrali sme:

  • pointre, pointerová aritmetika

Príklady

  • pointer na int, adresy premennych, hodnoty premennych

  int x = 5;
  int y = 6;
  int* p_x;
  int* p_y;
  p_x = &x;
  p_y = &y;

  printf("x je ulozene na %p a ma hodnotu %d\n", &x, x);
  printf("y je ulozene na %p a ma hodnotu %d\n", &y, y);
  printf("p_x je ulozene na %p, ukazuje na na adresu %p s hodnotou %d\n", &p_x, p_x, *p_x);
  printf("p_y je ulozene na %p, ukazuje na adresu %p s hodnotou %d\n", &p_y, p_y, *p_y);
  return 0;

 

  • pointer na pole

int pole[6] = {2,4,6,8,10,12};

int* p_pole = pole;

printf("cez indexy a []\n");

for (int i=0; i<6; i++)

   printf("na adrese %p je hodnota %d\n", &(p_pole[i]), p_pole[i]);

printf("cez pointerovu aritmetiku");

for (int i=0; i<6; i++)

   printf("na adrese %p je hodnota %d\n", p_pole+i, *(p_pole+i));

 

  • sizeof
printf("int zabera %lu\n", sizeof(int));
printf("long zabera %lu\n", sizeof(long));
printf("double zabera %lu\n", sizeof(double));
printf("char zabera %lu\n", sizeof(char));
printf("pole zabera %lu\n", sizeof(pole));
printf("p_pole zabera %lu\n", sizeof(p_pole));
 
adresy a hodnoty
adresy hodnoty
&x x
&p_x p_x
p_x *p_x
&(pole[0]) pole[0]
&(p_pole[2]) p_pole[2]
p_pole+2 *(p_pole+2)