sinout cosout
그러니까 reference를 사용하지 않았는데 값이 바뀌는 이유를 모르겠다는것 맞나요? 질문의 의도를 제대로 파악하지 못했지만 제가 이해한것이 맞다면 포인터를 쓰셨기 때문에 값을 바꿀수있다고 할수있겠네요 저도 아직 부족하지만 제가 생각하는 범위내에서 설명아닌 설명을 한다면 1. 포인터도 변수이므로 주소를 가진다 void fun(int *c) { int b = 7; //지역 변수 c= &b; } main() { int a=9; int *ptr = &a; fun(ptr) // 포인터도 변수이므로 주소를 가진다 } 2. *은 포인터 변수에 있는 주소값을 가리키는 값이다 *c = ptr 전달되면 ptr 변수에 있는 주소값이 c로 복사된다 포인터 변수 c에는 ptr 변수의 주소값이 들어간다 c의 주소값이 가리키는 값을 바꾸면 ptr이 가리키는 값도 바뀐다 -> main에 영향을 줄수있다 c의 주소값 다른 주소를 넣는다면(c = &b) c는 ptr의 주소가 아니라 b의 주소값이 들어가면서 ptr과 다른곳을 가리킨다 또 b는 지역변수이기때문에 void fun{}안에서만 유효하다 때문에 main에 영향을 줄수없다 제가 설명 했던 내용에 수정해야할 사항이 있다면 반드시 지적해주세요!