프로그래밍

 3198, 1/160 회원가입  로그인  
   ajdcjdgks
   c언어포인터

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3019 [복사]


#include <stdio.h>

int main(void)

{
      int arr[5] = {10 , 20 , 30 , 40 , 50};

      int *p = NULL;

      int i;

      p = arr;

      printf("%p\n",&p);

      for( i = 0 ; i < 5 ; i++)
      {
           printf("%d ",      );// 포인터로 배열에 접근해서 원소를 출력할때 필요한 코드를 작성하시오

          

           p++;

    
  
      }

      printf("\n");

      return 0;
}



반드시 p 를이용해서 배열의 원소에 접근하라는데...

자꾸 쓰래기 값이뜨네요 ..

어떻게해야되는지좀 알려주세요 .

  Hit : 4707     Date : 2011/05/27 01:14



    
clockmaker 그거 쓰레기 값 아닙니다;;
잘 보시면 두 번째 줄 출력이 4씩 증가하죠? int 변수는 4 byte니까 메모리를 4칸 먹게 되죠.
즉 출력된 게 주소라는 겁니다.
그럼, 해당 주소의 '데이터'인 10, 20 등을 출력하기 위해서는 어떻게 해야 할까요?

잘 모르겠다면, 포인터의 개념 부분을 다시 한 번 읽어보시는 게 좋을 것 같네요.
2011/05/27  
prosthetics printf("%d ", );// 포인터로 배열에 접근해서 원소를 출력할때 필요한 코드를 작성하시오

이부분을 비워두셨으니 %d값에 쓰레기 값만 뜨는것입니다.
%d형식으로 어떤값을 출력할지 적어주셔야지요.
2011/05/27  
clockmaker 1 음 p++;를 쓰신 걸로 봐서
맨 처음에 printf("%d", p); 라고 쓰셨다가 이상한 값이 나오니 지워 두신 거 같은데요 ㅎㅎ
2011/05/27  
ajdcjdgks clockmaker 님 말씀데로 printf("%d",p);라고썻다가 주소값이 정수로 나와서 지워둔거맞습니다 ㅎㅎ
책을 다시 읽어보니 답을찾았습니다 ㅎㅎ모두들 도움 주셔서 감사합니다 ^^
2011/05/27  
endosymbiosis int* p 에 대한 개념이 부족해서 생긴 것입니다.

int p : p라는 이름을 가진 int형 value를 넣을 수 있는 메모리
int* p : p라는 이름을 가진 int형 포인터 즉, 주소를 넣을 수 있는 메모리를 의미합니다.

즉 후자의 p에는 주!소! 가 저장이 되는군요.

그렇다면 주소에 있는 값을 찾아내는 포인터 연!산!자! ( * )가 필요하기 때문에
*p 를 입력하셔야 하는 것입니다.
2011/06/04