a=0x939f008, *a=1
0 0x939f008 *ptr=0
a=0x939f008, *a=1
0 0x939f008 *ptr=1
설명해주십시오 왜 * PTR =
int foo(int* a){
cout <<"a="<<a;
*a=1;
cout <<", *a="<<*a<<endl;
return 0;}
int main() {
int* ptr;
ptr=new int[2];
ptr[0]=0;
ptr[1]=0;
cout<< foo(ptr) <<" "<< ptr <<" *ptr="<< *ptr <<endl;
cout<< foo(ptr) <<" "<< ptr <<" *ptr="<< *ptr <<endl;
return 0;}
는 (리눅스)에 리드 두 번째 줄에는 0이 있지만 네 번째 줄에는 없습니다. "물건"이 오른쪽에서 왼쪽으로 cout
으로 "가져 오게"될 수 있습니까? 실제로 - 어떻게 실제로 작동합니까 (런타임에 단계별로)?
시도해보기 : 1) 인쇄하기 전에'foo'를 호출하면 어떻게됩니까? 2)'* ptr' 다음에'foo (ptr)'가 먼저 나오면 어떻게 될까요? 3)'a [0]'과'a [1]'을 원본'cout' 다음에 출력하면 어떻게됩니까? – Dennis
@Dennis (1) * ptr이 변경되어 이후의 cout에 "1"이 인쇄됩니다. (2) 흥미 롭습니다. cout << * ptr << "II"<< foo (ptr) << ""<