fork download
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<math.h>
  4.  
  5. int main()
  6. {
  7. /* �������� ���������� */
  8. int a = 1;
  9. float b = 2;
  10. double c = 3;
  11. /* ��������� */
  12. int *p1 = &a;
  13. float *p2 = &b;
  14. double *p3 = &c;
  15. void *p4 = NULL;
  16. /* ������ ��������� ���������� � ������ ���������� ������ */
  17. printf("a: int: start address %p extent %d\n",&a,sizeof(a));
  18. printf("b: float: start address %p extent %d\n",&b,sizeof(b));
  19. printf("c: double: start address %p extent %d\n\n",&c,sizeof(c));
  20. /* ������ ���������� � ������ ���������� ������ */
  21. printf("p1: pointer: start address %p extent %d\n",&p1,sizeof(p1));
  22. printf("p2: pointer: start address %p extent %d\n",&p2,sizeof(p2));
  23. printf("p3: pointer: start address %p extent %d\n\n",&p3,sizeof(p3));
  24. printf("p4: pointer: start address %p extent %d\n\n",&p4,sizeof(p4));
  25. /* ��������, �� ������� ��������� ��������� */
  26. printf("p1: %p related value %d\n",p1,*p1);
  27. printf("p2: %p related value %f\n",p2,*p2);
  28. printf("p3: %p related value %lf\n\n",p3,*p3);
  29. /* ������������� ���������� � ���������� */
  30. printf("a=%d\tb=%f\tc=%lf\n",a,b,c);
  31. *p1 = 5;
  32. *p2 = *p2 * *p1;
  33. *p3 = sqrt(*p3);
  34. printf("a=%d\tb=%f\tc=%lf\n",a,b,c);
  35. printf("*p1=%d\t*p2=%f\t*p3=%lf\n\n",*p1,*p2,*p3);
  36. /* ������������ ���������� */
  37. p1 = (int*)p2;
  38. p3 = (double*)p2;
  39. p4 = p2;
  40. printf("p1=%p\tp2=%p\tp3=%p\tp4=%p\n",p1,p2,p3,p4);
  41. printf("*p1=%d\t*p2=%f\t*p3=%f\t*(float*)p4=%f\n\n",*p1,*p2,*p3,*(float*)p4);
  42. /* ��������� �������� ���������� */
  43. p1++;
  44. p3--;
  45. printf("p1=%p\tp2=%p\tp3=%p\n",p1,p2,p3);
  46. printf("*p1=%d\t\t*p2=%f\t*p3=%lf\n",*p1,*p2,*p3);
  47. p1 -= 4;
  48. p3 = (double*)&a - 1;
  49. printf("p1=%p\tp2=%p\tp3=%p\n",p1,p2,p3);
  50. printf("*p1=%d\t*p2=%f\t*p3=%lf\n",*p1,*p2,*p3);
  51. return 0;
  52. }
  53.  
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
a:      int: start address 0x7ffce45d8908 extent 4
b:    float: start address 0x7ffce45d890c extent 4
c:   double: start address 0x7ffce45d8910 extent 8

p1: pointer: start address 0x7ffce45d8918 extent 8
p2: pointer: start address 0x7ffce45d8920 extent 8
p3: pointer: start address 0x7ffce45d8928 extent 8

p4: pointer: start address 0x7ffce45d8930 extent 8

p1: 0x7ffce45d8908 related value 1
p2: 0x7ffce45d890c related value 2.000000
p3: 0x7ffce45d8910 related value 3.000000

a=1	b=2.000000	c=3.000000
a=5	b=10.000000	c=1.732051
*p1=5	*p2=10.000000	*p3=1.732051

p1=0x7ffce45d890c	p2=0x7ffce45d890c	p3=0x7ffce45d890c	p4=0x7ffce45d890c
*p1=1092616192	*p2=10.000000	*p3=-443459608143134273662885840611191986994302798471837256132976627811013080170989229007181138033542832573601215845759122503060014697629963593860094327024446067406523292934412865706388667269788991488.000000	*(float*)p4=10.000000

p1=0x7ffce45d8910	p2=0x7ffce45d890c	p3=0x7ffce45d8904
*p1=-396866390		*p2=10.000000	*p3=0.000000
p1=0x7ffce45d8900	p2=0x7ffce45d890c	p3=0x7ffce45d8900
*p1=1	*p2=10.000000	*p3=0.000000