- 오늘 분반 배치고사를 보게됐는데 꽤 쉬운 문제였는데 처음에 엥 하고 넘어갔던 문제였다.
나중에 돌아와서 이렇게 풀면 되겠다 하고 풀었는데 처음에 막힌게 내가 부족하다 생각해서 공부를 해볼겸 가져왔다.
값에 의한 매개 변수 전달 (Call By Value)
- 우리가 자주 쓰는 방법으로 변수의 값을 복사해서 전달하는 방법이다.
함수와 메소드에서 값을 반환할때도 마찬가지이다. 변수가 가지고 있던 값을 복사해서 매개변수에게 넘겨줘서 원본 값은 변하지 않는 것이다.
즉 변수의 스택 값이 복사되는 것을 의미한다.
void Method(int refArgument)
{
refArgument = refArgument + 44;
}
int number = 1;
Method(number);
Console.WriteLine(number);
// Output: 1
참조에 의한 매개 변수 전달 (Call By Refefence)
[ ref ]
- ref 키워드를 이용하면 명시적으로 참조전달을 할 수 있게된다. 전달한 값이 변경될 경우에 원래 값에도 영향을 끼치 된다는 것이다.
즉 변수의 스택 값을 복사하지 않고 스택 값을 담고 있는 메모리 주소 자체를 넘기는 것을 의미한다.
void Method(ref int refArgument)
{
refArgument = refArgument + 44;
}
int number = 1;
Method(ref number);
Console.WriteLine(number);
// Output: 45
> 공식 문서 코드 추출
- 공식문서에는 ref의 코드만 나와있는데 이해를 돕기 위해서 값에 의한 매개 변수도 만들었다. 확실하게 출력값이 다른걸 볼 수 있는데 만약 이걸 처음 봤다면 문제를 아예 못풀만도 했을 것 같다.
배치고사 예시 코드
- 보자마자 피슝 생각이 나지않은 코드 풀어보기!
class Program
{
private static void Sum(____________)
{
result += i;
}
static void Main(string[] args)
{
int value = 50;
Console.WriteLine(value);
Sum(500, _________);
Console.WriteLine(value);
}
}
// 출력
// 50
// 550
문제랑 너무 똑같아질까봐 값도 바꾸고 변수명도 바꾸긴 했는데 이런 간단한 코드에 뭘 바꾼다고 해봤자 거기서 거기긴 하다.. ㅎㅎ
이렇게 되어있는 문제였는데 출력은 저렇게 주석처리 되어있는 것 처럼 했으면 됐다.
자 이 문제를 처음 봤을때 진짜 간단한 문제라는 생각이 다들 들 것 같다. 나도 그랬으니깐.
ref 안쓰고 야매로 추가해서 하다가 이건 아닌 것 같아서 지우다가 생각나서 ref로 풀었다.
class Program
{
private static void Sum(int i, ref int result)
{
result += i;
}
static void Main(string[] args)
{
int value = 50;
Console.WriteLine(value);
Sum(500, ref value);
Console.WriteLine(value);
}
}
// 출력
// 50
// 550
매개 변수 받아줄 위치 정해주고 전달하고 저장하고 출력해주면 끝~
오늘의 회고
국어 실력이 부족해서인지 정렬하는 프로그램을 짜라길래 그냥 OrderBy를 써서 만들었는데 그러면 안되고 직접 정렬 함수를 구현하라는 거였다... 왠지... 사람들 다 풀고있을때 나혼자 낄낄 빨리 풀었네 이러면서 나온거였네...
그래도 문제는 쉬웠던것 같아서 다 풀었으니 적어도 보통반 정도까지는 가지않을까 싶다.
다음부터는... 글의 요지 파악을 잘하자.... 화이팅...
'Record > TIL' 카테고리의 다른 글
[Unity] 팀프로젝트 던전 마무리 (2) | 2024.05.07 |
---|---|
[Unity] 깊은 복사와 얕은 복사 (2) | 2024.05.03 |
[Unity] SelectToken/SelectTokens ? (4) | 2024.05.01 |
[Unity] Json 직렬화, 역직렬화 (0) | 2024.04.30 |
[Unity] 평범한 직장인이였던 내가 차에 치였더니.. (2) | 2024.04.29 |