C초보 질문) *이랑 &는 언제 같이 쓰나요?
조회수 2248회
발생하는 문제 및 실행환경
포인터를 처음 배우고 있는데 계속 헷갈리네요
&는 변수의 주소를 의미하고 *는 포인터로 쓸 변수에다가 붙이는 것 까지는 알고 있는데
배열, 문자열은 또 다르게 쓰고 함수로 인자로 넘기는 것도 잘 모르겠어요 ㅜㅜ
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
기본 사용
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);로 생각
댓글 입력