검색결과 리스트
[캐스팅 연산자]에 해당되는 글 1건
- 2014.03.18 [smart]이재우-20140318
글
2014. 03. 18 수업 및 과제
1 포인터(Pointer)의 이해
1.1 메모리 구조
- 일반적[1 byte(8 bit) 단위 마다 주소(address)를 지정]
- &변수명 :address 지정
[예제]
#include <stdio.h>
int main()
{
int iNum=0;
printf("%d \n", iNum); /* 0 */
printf("%d \n", &iNum); /* 1245044 */
printf("%X \n", &iNum); /* 12FF74 */
printf("%08X \n", &iNum); /* 0012FF74 08X: 8자리 빈자리에 0입력 16진수 출력*/
printf("%p \n", &iNum); /* 0012FF74 %p: 포인터의 16진수 주소값 출력*/
return 0;
}
1.2 포인터(Pointer)설명
* : 주소(단항 /캐스팅) = 캐스팅 연산자 역할 (일시적인 형변환)
* : 값(단항)
[예제]
#include <stdio.h>
int main()
{
int iNum = 0;
// &iNum = 100; 컴파일 waring C4047 &iNum 같지않다 int형 (100)
iNum 의 주소상수(&) 를 의미함
// (int*)0x12FF74 = 100; 컴파일 waring C4047 (int *)0x12FF74 같지않다 int(100)
iNum 의 주소상수(&) 를 의미함
*(int*)0x12FF74 = 100; *(int*)0x12FF74 좌변은 iNum 의 변수 를 의미
printf("%08X \n", &iNum);
printf("%d \n", iNum);
*(&iNum) = 1000; (int *)0x12FF74 = &iNum 이랑 같다.
*& 가 만나면 서로 상쇄된다.
printf("%08X \n", &iNum);
printf("%d \n", iNum);
return 0;
}
1.3 캐스팅 연산자
* : 곱셈(2항 )
[예제]
#include <stdio.h>
int main()
{
int iNum=0;
int iAddr=0;
int *iP;
iAddr=(int)(&iNum); warning error
iAddr=&iNum; -> 좌변은 int(정수형) 우변은 int * (정수형 주소상수)
printf("%08X \n", iAddr); // 0012FF6C &iNum 주소값
*( (int*)iAddr )=1000; // 1000을 iAddr 주소 포인터에 넣어라.
printf("%d \n", iNum); // 1000 1000출력
iP=&iNum;
*iP=999;
printf("%d \n", iNum); // 999
return 0;
}
[결과]
1.4 point 연산자 활용
[예제]
#include <stdio.h>
int main()
{
int iNum=0;
int * iP=&iNum;
printf("%d \n", iNum); // 0 iNum 변수값
printf("%08X \n", &iNum); // 12FF70 iNum 자신의 주소값
printf("%08X \n", iP); // 12FF70 iP 변수(&iNum주소)값
printf("%08X \n", &iP); // 12FF74 *iP 자신의 주소값
printf("%d \n", *iP); // 0 &iP 주소가 가리키는 변수(iNum)의 값
return 0;
}
[결과]
'…™업무일지。' 카테고리의 다른 글
[smart]이재우-20140320 (0) | 2014.03.20 |
---|---|
[smart]이재우-20140319 (0) | 2014.03.19 |
[smart]이재우-20140317 (0) | 2014.03.17 |
[smart]이재우-20140314 (0) | 2014.03.14 |
[smart]이재우-20140313 (0) | 2014.03.13 |
RECENT COMMENT