알고리즘교안 p113 2차원배열수정하기 질문
안녕하세요 사소할 수 있지만 궁금해서 질문올립니다!
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점은 제가 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
5-B
0
16
2
4 - A
0
33
2
코딩살구클럽 입장이 안됩니다
0
82
2
4-F 경우의 수 질문입니다.
0
35
2
코딩살구클럽 가입이 안됩니다.
0
85
2
살구 클럽에 대한 질문있습ㄴ디ㅏ
0
63
1
교안 158페이지 문의드립니다
0
46
2
코딩살구클럽 관련 건의사항
0
119
1
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
45
1
진행 방법 질문드립니다!
0
83
2
2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.
0
64
2
2주차 개념#12 트리 순회
0
33
2
백준사이트가 종료된다고 합니다.
0
318
2
백준 서비스 종료
9
953
1
sk 하이닉스 코테 대비
0
388
2
3-G 최댓값 질문
0
54
1
모듈러 연산 값이 10이 아닌 경우도 있지 않나요?
0
84
2
3-I 코드 질문드립니다.
0
66
2
3-N 질문 있습니다.
0
68
2
학습방법
0
105
2
4-H 질문 있습니다 (코드 리뷰)
0
69
2
코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.
0
186
2
2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.
0
74
2
2주차 개념 #4-2. 인접행렬 질문있습니다.
0
66
2





