&변수명 주소를 알아낸다.
int * 은 상수이다. (&int가 int * 과 같음(?)) &iNum = 100; 은 상수 = 정수형상수 이기때문에 성립이 되지않는다.
자료형 |
변수명(심볼명) |
주소 |
int |
iNum |
0x12FF74 |
7번째줄로 iNum의 주소값을 알아내었다.
메모리의 어딘가가 0x12FF74자리 즉 iNum의 할당된 자리이다.
|
|
0x12FF74 |
|
|
|
|
|
|
|
분홍색으로 색칠된 곳이 임의로 설정한 0x12FF74라고 치면 int는 4byte이기 때문에 76부터 그뒤의 75,76,77까지가 iNum의 주소이다. 이때 iNum의 주소는 0x12FF74부터 0x12FF77까지입니다. 라고 하거나 0x12FF74입니다 라고 한다.
주석 처리한것 부터 살펴보면 11번째줄 0x12FF74 의 주소값에 = 100을 넣어라. 는 상수 = 상수 이기때문에 허용되지 않는다.
->에러가뜬다 [error C2106: '=' : 왼쪽 피연산자는 l-value이어야 합니다.]
&iNum = 100;
(int *)0x12FF74 = 100;
은 같은 말이다. 하지만 이것 또한 워링과 에러가 뜬다 ㅠㅠ.
*((int *)0x12FF74)=100;
혹은
*(&iNum)=100;
을 하면 에러가없이 잘 뜨게 된다!
'2014 C > 3월' 카테고리의 다른 글
2014.03.19 (0) | 2014.03.19 |
---|---|
2014.03.18_2 (0) | 2014.03.18 |
1212 (0) | 2014.03.18 |
2014.03.17 (0) | 2014.03.17 |
2014.03.14 (0) | 2014.03.14 |