프로그래밍

 3198, 1/160 회원가입  로그인  
   capt_0669
   포인터 간단한 질문이요

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


#include <stdio.h>

int main(void)
{

        int arr[5]={1, 2, 3, 4, 5};

        int* pArr=arr;
        printf("%d \n", *pArr);

        printf("%d \n", *(++pArr));
        printf("%d \n", *(++pArr));
        
        printf("%d \n", *(pArr+1));
        printf("%d \n", *(pArr+2));

        return 0;
}

아니...왜?!?!?!?!?!?!?!?!?

int* pArr=arr에서
포인터 pArr이 그냥 1이 됩니까...

그래서 int* pArr=arr[0]하니깐 또 GG락 하고...

엔터티가 어쩌구 저쩌고

포인터와 배열은 둘다 주소에 대한 것인데

int* pArr=어쩌고 에서

arr[0] 이나 숫자들이 안되는 이유는 상수이기때문이고 arr이 되는이유는

포인터 pArr에서의 arr은 arr[5]의 arr[0]즉, 1이기 때문에 작동되는건가요??

하지만 포인터가 주소를 나타내서

int* pArr=&a[0]해도 안되던데...

저의 생각들을 정리해보겠습니다.(맞다 아니다로 대답해주세요^^)

1. 포인터 pArr앞에는 주소가 와야되므로 arr이 앞에온다 왜냐하면 배열의 이름도 주소이니깐(포인터이니깐)

2. pArr앞에 a[0]나 숫자가 못 오는 이유는 pArr은 변수들과 상대하기 때문이다

질문은

1. 왜 int* pArr=&a[0]은 안되는지... 왜냐하면 배열 요소의 이름 앞에 & 연산자를 붙이면 주소가 나오지 않나요??

2. 배열의 이름도 포인터라던데 포인터는 주소고 배열의 이름도 주소인데...주소도 변수인가요??
포인터는 변수와 상대한다고 해서..

  Hit : 4944     Date : 2011/01/04 10:35



    
kumi123 1. 가능합니다...요소자체의 주소를 포인터가 가르키게 해서 불러낼수 잇어요.
방금 실행해봐도 결과 잘 나옵니다.
2. 포인터와 배열의 차이는 변수냐 상수냐의 차이입니다.
포인터는 어느 값이든 가르킬 수 있는 변수이지만
배열은 자기 자신밖에 가르킬수 없습니다.
2011/01/05  
capt_0669 내;;;잘나오네욬ㅋㅋㅋㅋ

근대 왜 어제는 잘 않나왔지...;;ㅋㅋㅋ

감사합니다
2011/01/05