/* osoittimet.c */ /* SJ 010498 */ 

#include <stdio.h>

int main()
{
  int a;          /* kokonaisluku */
  int *b;         /* osoitin kokonaislukuun */

  float x;        /* liukuluku */
  float *y;       /* osoitin liukulukuun */
  float **z;      /* osoitin osoittimeen, joka on
					 osoitin liukulukuun */

  a = 5;          /* Tavallinen sijoitus */
  b = &a;         /* b = a:n osoite */

  /* b:n osoittamassa paikassa on luku 5 */
  printf("*b == %d\n", *b);   

  *b = 6;         /* b:n osoittamaan paikkaan
					 sijoitetaan luku 6 */
  printf("a == %d\n", a);	/* a:n arvo on 6 */

  x = 1.234;
  y = &x;         /* y = x:n osoite */
  z = &y;         /* z = y:n osoite */

  printf("*y == %f\n", *y);
  printf("&x == %p\n", &x);
  printf("y == %p\n", y);
  printf("*z == %p\n", *z);
  printf("**z == %f\n", **z);

  y = NULL;
  printf("y == %p\n", y);

  exit(0);
}

/* Tulostus

 > gcc -ansi -Wall osoittimet.c
 > a.out 
*b == 5
a == 6
*y == 1.234000
&x == effff984
y == effff984
*z == effff984
**z == 1.234000
y == 0

 */
