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. }
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout
a:      int: start address 0x7fffcf1e06a8 extent 4
b:    float: start address 0x7fffcf1e06ac extent 4
c:   double: start address 0x7fffcf1e06b0 extent 8

p1: pointer: start address 0x7fffcf1e06b8 extent 8
p2: pointer: start address 0x7fffcf1e06c0 extent 8
p3: pointer: start address 0x7fffcf1e06c8 extent 8

p4: pointer: start address 0x7fffcf1e06d0 extent 8

p1: 0x7fffcf1e06a8 related value 1
p2: 0x7fffcf1e06ac related value 2.000000
p3: 0x7fffcf1e06b0 related value 3.000000