본문으로 바로가기

[C언어] Mr. A 를 찾아라!

category C 2014. 5. 2. 15:10

Mr. A 를 찾아라!

<예 #1>

#include <stdio.h>

int a = 0;

void main()

{

    int a = 1;

    {

        int a = 2;

        {

            int a = 3;

        }

     }

}

 

<예 #1>

굵게 표시된 부분은 참조만 할 것

-> 포인터의 내용이 들어가므로 참조만 하세요!

 

#include <stdio.h> // for printf()
#include <stdlib.h> // for malloc, free

int a = 0;
void main()
{
 printf("a : %d, &a : %p\n", a, &a);
 int a = 1;
 printf("a : %d, &a : %p\n", a, &a);
 {
  int a = 2;
  printf("a : %d, &a : %p\n", a, &a);
  {
   int a = 3;
   printf("a : %d, &a : %p\n", a, &a);
   {
    int *a;
    a = (int*)malloc(100000000*sizeof(int));
    *a = 4;
    printf("*a : %d, a : %p, &a: %p\n", *a, a, &a);
    {
     int *a;
     a = (int*)malloc(100000000*sizeof(int));
     *a = 5;
     printf("*a : %d, a : %p, &a: %p\n", *a, a, &a);
     free(a);
    }
    printf("*a : %d, a : %p, &a: %p\n", *a, a, &a);
    free(a);
   }
   printf("a : %d, &a : %p\n", a, &a);
  }
  printf("a : %d, &a : %p\n", a, &a);
 }
 printf("a : %d, &a : %p\n", a, &a);
}


 

결과

a : 0, &a : 004284F0
a : 1, &a : 0012FED4
a : 2, &a : 0012FEC8
a : 3, &a : 0012FEBC
*a : 4, a : 00430040, &a: 0012FEB0
*a : 5, a : 181B0040, &a: 0012FEA4
*a : 4, a : 00430040, &a: 0012FEB0
a : 3, &a : 0012FEBC
a : 2, &a : 0012FEC8
a : 1, &a : 0012FED4
Press any key to continue