2017-11-10 4 views
-2
#include <iostream> 
using namespace std; 

void test(int x, int *y) { 

*y = 5; 

} 

int main() { 
int *a ,b =2 ; 
a = &b; 

test(*a, a); 
a--; // a++ also give different value 

이것은 매우 혼란 스럽습니다. (a--) 문장을 넣으면 5가 될 것입니다.하지만 실제로 의미가 뒤에있는 이유는 무엇입니까? 다른 값으로 테스트하면서 다른 값. 나는 이것을 우연히 발견했다.주소에 증가/감소를 사용하면 어떤 값이 변경됩니까?

cout<<"d"<<*a<<endl; 

} 

답변

1

a는 변수에 대한 메모리 포인터를 포함합니다. 그래서 * a = 5입니다. 만약 당신이 a를 증가 시키거나 감소 시키면, 그것은 메모리 내의 몇몇 다른 주소/위치를 가리키고, 이것은 쓰레기 값을가집니다. 그것이 당신이 얻는 것입니다. 당신은 몇 가지가 있습니다 메모리 에 [2004]이/[1996] 위치에 ++/할까 .. 다음 의지 포인트를한다면> [2000] // 메모리 주소 값 5 포함하는 -

는이 말할 수 있습니다 쓰레기 값.