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


발생하는 문제 및 실행환경

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

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

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


조회수 225


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);로 생각
  • 2016년 02월 04일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close