본문 바로가기

CS/Basic2

Call By Value VS Call By Reference 차이점 Call By Value Call By Value란 값에 의한 호출로, 함수 호출 시 함수를 위한 별도의 메모리 공간을 생성하고(종료시 사라짐), argument의 값을 복사하여 함수의 parameter로 전달한다. 복사된 인자는 지역변수의 특성을 가진다. 지역변수의 특징을 가지기 때문에, 내부에서 인자값을 변경하더라도 원본 인자값은 변경되지 않는다. void func(int n){ n = 20; } void main(){ int n = 10; func(n); printf("%d", n); // 10이 출력됨! } Call By Address call by value처럼 값을 복사해서 전달하는데, 주소값을 복사하는 것을 뜻한다. 아래에서 자바에서의 참조형타입을 넘길때의 형태. 결국 call by valu.. 2022. 3. 12.
[Python] 객체복사,shallow copy,deep copy a라는 변수가 있을때 b라는 변수에 a에있는 내용을 복사해두고 b를 변경해서 쓰다가 원본 a와 비교하고 싶었다... 그래서 b =a 담고 했지만 b를 변경했더니 a도 같이 변경해버리는 문제가 발생했다! 문제의 원인과 해결방법은 아래에서 1. 객체 복사 위에서 말했던 케이스이다. b = a라는 변수를 담았기에 a가 바라보는 객체를 b도 동일하게 바라본다. 그러므로 둘중에 하나를 변환시켜도 동일하게 변환된다. a = [1,2,3,[4,5,6]] b= a # 객체 복제 print(b) # [1,2,3,[4,5,6]] b[1] = 100 # b의 1번자리를 3으로 변경 print(b) # [1, 100, 3, [4, 5, 6]] print(a) # [1, 100, 3, [4, 5, 6]] b[3].append(.. 2022. 1. 5.