void foo(int* functionparameter1) {
cout << functionparameter1<< " " << *functionparameter1 << " " << &functionparameter1 << endl;
*functionparameter1 = 10;
}
void foo2(int* functionparameter2) {
cout << functionparameter2 << " " << *functionparameter2 << " " << &functionparameter2 << endl;
*functionparameter2 = 15;
}
int main()
{
int value = 5;
int* ptr = &value;
foo(ptr);
foo2(ptr);
return 0;
}
결과 :
0072AB2A 5 0096FDF8
0072AB2A 10 0096FDF8
질문 :
여기서 함수의 매개변수 functionparameter1, functionparameter2가 같은 0096FDF8 주소인게 이해를 못하겠습니다.
다른 함수의 매개변수인데 주소가 서로 달라야 하는거 아닌가요?
포인터자나요
address of value를 넘겼잖아여
int* ptr가 몸통이여.. 주소를 관리하는 몸통..
매개변수로 받은거잖아 저거는
위에 애들 다 헛소리고 컴파일러가 최적화해서 그럼
foo()랑 foo2() 구조가 똑같은데 foo()끝나면 스택에서 지워지니까 그런거아님?