인프런 커뮤니티 질문&답변

패러그래프님의 프로필 이미지
패러그래프

작성한 질문수

홍정모의 따라하며 배우는 C++

6.2 배열 기초 [2 of 2] array

6.2배열기초 2of2 10:15

작성

·

353

·

수정됨

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

6.2배열기초 2of2 10:15

 

dosomething함수에서

&students_scores의 주소와 &students_score[0]의 주소가 왜 다른가요?? 배열의 첫 번째 주소가 배열의 주소라면 같아야 하는 것 아닐까요??

dosomething에서 다르게 나온 이유는 강의에서 dosomething의 &students_scores의 주소가 인자를 가리켜서 그런 것이라고 설명 들은 것 같은데 근데 배열이 함수로 넘겨 받을 때 주소로 복사 되는 것이라면 주소가 똑같이 나와야 하는 것이 아닌지 이해가 안갑니다

답변 1

0

혹시 정수형으로 casting하여 헷갈리신 것은 아닐지요?

아래와 같이 본절적으로 &students_scores 와 &(students_scores[0])는 같습니다.

 

minchul@~/workspace$ g++ test.cc

minchul@~/workspace$ ./a.out

0x16f713698

0x16f713698

0x16f71369c

0x16f7136a0

0x16f7136a4


minchul@~/workspace$ cat test.cc

#include <iostream>

using namespace std;

int main()

{

	const int num_students = 20;

	int students_scores[num_students];

	cout << &students_scores << endl;

	cout << &(students_scores[0]) << endl;

	cout << &(students_scores[1]) << endl;

	cout << &(students_scores[2]) << endl;

	cout << &(students_scores[3]) << endl;

	cout << sizeof(students_scores) << endl;

	return 0;

}

음 근데 강의에서는 main함수는 같게 나오는데 dosomething함수로 받을 때는 다르게 나오던데 매개변수로 받아서 그런걸까요??

함수에 값을 매개변수로 넘겼다면 (call by value)

변수가 복사되기 때문에 저장된 주소도 달라져셔 그렇습니다.

패러그래프님의 프로필 이미지
패러그래프

작성한 질문수

질문하기