C초보 질문) *이랑 &는 언제 같이 쓰나요?

발생하는 문제 및 실행환경

포인터를 처음 배우고 있는데 계속 헷갈리네요

&는 변수의 주소를 의미하고 *는 포인터로 쓸 변수에다가 붙이는 것 까지는 알고 있는데

배열, 문자열은 또 다르게 쓰고 함수로 인자로 넘기는 것도 잘 모르겠어요 ㅜㅜ

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    기본 사용

    int* p; // p는 int를 가리키는 포인터
    int i;
    

    이걸로 예시를 들겠습니다.

    1. 포인터에 *를 붙이면 - 해당 값으로 변함

    int i2 = *p; // i2에 p가 가리키는 대상이 할당
    

    2. int값에 &를 붙이면 - 포인터형으로 변함

    int* p2 = &i; // p2가 가리키는 대상이 i로 변함(p2의 값 = i의 주소 값)
    

    배열

    배열은 포인터랑 똑같지는 않지만, 포인터같이 쓸 수 있습니다.

    1. 배열에 *를 붙이면 - 배열의 첫 번째 값에 접근 가능([0]와 비슷한 기능)

    int a[2];  // int를 원소로 하는 배열
    int i = *a; // a의 첫 번째 원소가 i에 저장됨
    int i2 = a[0]; // a의 첫 번쩨 원소에 접근하는 다른 방법
    

    2. 포인터를 써서 배열의 n번째 원소에 접근하는 방법

    int a[2]; // int를 원소로 하는 배열
    int i = *(a + 1); // 2번째 원소에 접근
    int i2 = a[1]; // 2번째 원소에 접근하는 다른 방법
    
    //a[i] == *(a + i);로 생각
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.