L value = R value
wirte Read
L value는 쓰는거고 R value을 읽어 올수 있다.
R value를 읽어와서 L value에 쓴다로 해석할수 있다.
밑에 코드에서 P1은 4바이트를 가진다. P2도 4바이트를 가진다. WHY? 둘다 포인터 변수이기 때문이다.
포인터 변수는 4바이트를 가지기에~
그러나 가져올때 int* p1 = &iNum;에서 int로 가져오기에 12345678이 출력되고 char* p2 = &iNum;에서는 char로 가져오기에 78이 출력되고 나머지는 0으로 채워진다.
*p2 = 0xAB;을 입력하게 되면 78자리에 AB가 들어가게 된다.
그리고 출력하면 123456AB가 되는것을 볼수 있다.
#include<stdio.h>
int main()
{
int iNum = 0x12345678;
int* p1 = &iNum;
char* p2 = &iNum;
printf("%08x\n", *p1);
printf("%08x\n", *p2);
*p2 = 0xAB;
printf("%08X\n", iNum);
}
'스마트팩토리 > C언어' 카테고리의 다른 글
C언어 13일차(배열) (0) | 2020.10.22 |
---|---|
C언 12일차 (포인터) (0) | 2020.10.21 |
C언어 10일차(포인터) (0) | 2020.10.15 |
C언어 9일차(포인터) (0) | 2020.10.14 |
C언어 8일차(반복문) (0) | 2020.10.13 |