Programming Languages/C와 C++

C언어 배열에서 포인터 사용하기

minjiwoo 2021. 9. 29. 16:55
728x90

ㄷㄷ 와 대체 C언어를 4학년때 다시 하는데 왜이렇게 깨닫는게 많은지

대박 이걸 몰랐네 왕신기하다 ! 하는 모먼트들이 종종 있다

ㅋㅋㅋㅋ

int main(int argc, const char * argv[]) {
    
    int score[] = {77,88,99};
    
    for (int i = 0; i < 3; i++)
    {
        printf("%2d %10u %6d \n", i, (score+i), *(score+i));
    }
    
    return 0;
}

 

[RESULT]

 0 4022334556     77 

 1 4022334560     88 

 2 4022334564     99 

내 컴퓨터에는 저리 찍힌다 딱봐도 알겠지만

(score+i) 이게 주소값이다 이말은 다음과도 같다 !!

&(score[i]) == score + i

대박사건~~~ 배열 그 자체에서 주소값을 한칸씩 이동한다는거네 

다시 생각하면, 배열이름 자체가 포인터가 된다

 

그럼 value를 참조하는 참조값을 살펴보자

score[i] == *(score + i)

저 주소값이랑 연관해서 이해하면 쉽다 score +i 가 주소고 * 연산자 붙여서 값을 간접적으로 참조한다

와... 이걸 2021년도에 깨닫다니 허허 재밌구만

728x90