-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
doSomething 함수의 파라미터
22.03.21 15:04 작성 조회수 125
2
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
수업에서 한 doSomething함수를 적다가 궁금해서 cout<<array도 해 보았는데요, cout<<&array와 값이 다르게 나오는 이유가 뭔지 궁금합니다
답변을 작성해보세요.
2
강민철
2022.03.21
안녕하세요 :)
위 예시에서 array는 첫 번째 원소를 가리키는 포인터(주소)이고,
&array는 배열 전체를 가리키는 포인터입니다.
일반적으로 이는 같은 주소를 가리키지만,
보여주신 예시처럼 인자로 배열을 넘긴 경우
(array의 값은 변하지 않음에도 불구하고)
&array는 해당 인자의 주소가 됩니다.
가령 아래 코드의 &arr는 인자로 할당된 int arr[]의 주소입니다.
#include <iostream>
using namespace std;
void dosomeThing(int arr[])
{
cout << arr << endl;
cout << &arr << endl;
}
int main() {
int nums[20] = { 1, 2, 3, 4 };
dosomeThing(nums);
return 0;
}
그래서 arr와 &arr의 출력결과가 다르게 찍힙니다.
반면 아래 코드 속 &arr와 arr는 같습니다.
그래서 두 변수의 출력 결과도 동일하게 찍힙니다.
#include <iostream>
using namespace std;
int main() {
int nums[20] = { 1, 2, 3, 4 };
cout << nums << endl;
cout << &nums << endl;
return 0;
}
감사합니다.
답변 1