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

eunjin님의 프로필 이미지
eunjin

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

알고리즘교안 p113 2차원배열수정하기 질문

해결된 질문

작성

·

402

·

수정됨

0

안녕하세요 사소할 수 있지만 궁금해서 질문올립니다!

p113 코드 전문->>

제가 먼저 113페이지 교안 코드 읽고 내용 이해한 다음에 교안 안보고 코드 타이핑해서 컴파일돌렸을때 위 사진의 코드처럼 6~13번째 줄 벡터 이름을 v, v2, v3로 작성했고, 잘 돌아갔습니다.

그런데 교안과 동일하게 작성했는지 다시 봤더니 교안은 6~13번째 줄이 아래 코드처럼 셋다 v로 들어가있더라구요?

void go(vector<vector<int>> &v){

v[0][0] = 100; }

void go2(vector<vector<int>> &v){

v[0][0] = 100; }

void go3(vector<int> v[10]){

v[0][0] = 100; }

그래서 오타인가 싶어서 제가 처음 작성했던것과 결과가 같은지 교안의 코드도 돌려봤는데 결과도 똑같이 나왔습니다..이거 왜그런건가요?? 오타가 아닌건가요?

go(v); go2(v2); go3(v3); -> 저는 이 부분 때문에 인자와 매개변수를 일치시키기 위해 함수선언 부분에도 v, v2, v3로 작성했던거였는데, 일치시키지 않고 다 v로 넣어도 결과가 같은 이유를 모르겠습니다

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 은진님 ㅎㅎ

go(v); go2(v2); go3(v3); -> 저는 이 부분 때문에 인자와 매개변수를 일치시키기 위해 함수선언 부분에도 v, v2, v3로 작성했던거였는데, 일치시키지 않고 다 v로 넣어도 결과가 같은 이유를 모르겠습니다

>>

매개변수는 어떠한 이름을 써도 괜찮습니다. 매개변수와 들어갈 때의 변수명을 통일해도 되지만 굳이 통일하려고 하지 않는게 좋습니다. 예를 들어

어떠한 함수 go()에 b라는 것도 들어가고 a라는 것도 들어간다면 2개의 함수를 구축해야 할까요? 아닙니다. 함수자체는 여러개의 매개변수를 커버할 수 있도록 구축하는게 좋습니다.

예를 print 함수를 만들어볼게요.

#include <bits/stdc++.h>
using namespace std;  
void print(vector<int> v){
	for(int i : v) cout << i << ' ';
	cout << '\n';
}
int main() { 
	vector<int> v1 = {1, 2, 3};
	vector<int> v2 = {4, 6, 6};
	print(v1);
	print(v2); 
    return 0;
}

앞의 코드처럼 V1, V2라는 변수를 v라는 변수로 받다 보니 v1, v2에 따라 함수를 다시 재정의할 필요가 없죠?

 

이렇듯, 굳이 매개변수와 들어가는 변수명의 통일은 지키지 않는게 오히려 더 좋습니다.

 

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

eunjin님의 프로필 이미지
eunjin

작성한 질문수

질문하기