c·c++/c 프로그래밍

배열과 포인터

바로이순간 2011. 12. 11. 16:43

#include <stdio.h>
void print_a(int[]);
 
int main() {
  int a[2]={101,202};
  int *p;
  p=a;
 
  printf("  a = %p\n",a);   // 1
  printf(" &a = %p\n",&a);  // 2
  printf("\n");

 

  print_a(a);

 

  printf("  p = %p\n",p);   // 5
  printf(" &p = %p\n",&p);  // 6

  return 0; 
}
 
void print_a(int b[]) {
  printf("  b = %p\n",b);  // 3
  printf(" &b = %p\n",&b); // 4
  printf("\n");
}

==========================================

출력은

  a = 0022FF18  // 1
 &a = 0022FF18  // 2

 

  b = 0022FF18  // 3
 &b = 0022FF00  // 4

 

  p = 0022FF18  // 5
 &p = 0022FF14  // 6

가 나온다.

 

5의 경우 p의 값이 a의 주소값을 가진다는 것을 알수 있다.
하지만 6을 보면 p자신은 다른 장소를 차지하고 있다는 것을 알수 있다.

 

마찬가지로 인자로 넘어가 b도 b자신은 다른 장소를 차지하고 있지만
b의 값은 a의 주소값을 가지고 있다는 것을 알수 있다.

 

a의 경우는 a자신이 다른 장소를 차지하고 있지 않기 때문에
a의 값과 a의 주소값이 같은 값을 가진다. a는 자신을 가리킨다고 보면 되겠다.
 

'c·c++ > c 프로그래밍' 카테고리의 다른 글

수억개의 자연수에서 몇개의 수찾기  (0) 2011.12.12
getch() getche() getchar()  (0) 2011.12.11
문자와 배열  (0) 2011.12.11
fprintf(stderr, "argggg"); 에 대하여  (0) 2011.12.11
단어가 등장하는 줄세기  (0) 2011.12.10