본문 바로가기
Programming/C#

배열 포인터

by NAMP 2009. 6. 5.

 

 #include <stdio.h>

int main()
{
 char name[4][10]={"Air","Oil","biscuit","Golf"};
 char **p;
 char (*pt)[10];
 int i;

 p=name;
 pt=name;

 for (i=0;i<4;i++)
 {
  printf("pt[%d]=%9s(%x)\n",i,pt[i],pt[i]);
 }

 for (i=0;i<4;i++)
 {
  printf("%s\n",*pt++);
 }
}

 

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

pt[0]=      Air(12fcac)
pt[1]=      Oil(12fcb6)
pt[2]=  biscuit(12fcc0)
pt[3]=     Golf(12fcca)
Air
Oil
biscuit
Golf
Press any key to continue

정상적으로 잘 나오네요.

 

그럼, For 문의 위치를 바꾸고, scanf를 추가하면,,

#include <stdio.h>

int main()
{
 char name[4][10]={"Air","Oil","biscuit","Golf"};
 char **p;
 char (*pt)[10];
 int i;
 
 p=name;
 pt=name;

 for (i=0;i<4;i++)
 {
  printf("pt[%d]=%9s(%x)\n",i,pt,pt);
  printf("input > ");
  scanf("%s",pt++);
 }

 pt=pt-4;

 for (i=0;i<4;i++)
 {
  printf("pt[%d]=%9s(%x)\n",i,pt[i],pt[i]);
 }
}

 

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

 

pt[0]=      Air(12fcac)
input > Apple
pt[1]=      Oil(12fcb6)
input > Orange
pt[2]=  biscuit(12fcc0)
input > Banana
pt[3]=     Golf(12fcca)
input > Grape
pt[0]=    Apple(12fcac)
pt[1]=   Orange(12fcb6)
pt[2]=   Banana(12fcc0)
pt[3]=    Grape(12fcca)
Press any key to continue

 

다음과 같이, 내용을 입력하여 변경할 수 있게된다.

중요한 것은 scanf 를 사용하면서, pt++ 를 하게 되어, 포이터가 이동하게 되므로,

For 문을 빠져 나온 이후, pt=pt-4를 해서 포인터를 다시 원위치로 이동시킨다.

그러면, 자연스레 출력이 된다. 

'Programming > C#' 카테고리의 다른 글

Easy String to DateTime, DateTime to String and Formatting  (0) 2011.11.22
ToString  (0) 2011.11.15
C - 지렁이 & 지뢰 찾기 게임 만들기  (0) 2009.03.29
C - 구구단 파일 입출력  (0) 2009.03.27
Maximum value of each Radix ... ?  (0) 2009.03.25

댓글