//주소연산을 보여주는 프로그램의 예
#include <stdio.h>
int main()
{
short sNum = 5, *sp = &sNum;
float fNum = 2.3f, *fp = &fNum;
printf("sp의 값 : %p\n", sp);
printf("증가된 sp의 값 : %p\n", ++sp);
printf("fp의 값 : %p\n", fp);
printf("증가된 fp의 값 : %p\n", ++fp);
return 0;
}
결과
sp의 값 : 0012FF7C
증가된 sp의 값 : 0012FF7E
fp의 값 : 0012FF74
증가된 fp의 값 : 0012FF78
리눅스에서 결과
sp의 값 : 0xbffff84a
증가된 sp의 값 : 0xbffff84c
fp의 값 : 0xbffff840
증가된 fp의 값 : 0xbffff844
실행 결과에서 short형 포인터 변수 sp의 증가는 2며, float형 포인터 변수의 fp의 증가는 4가 된다는 것을 알수 있다.
예) 각 포인트 변수값의 연산
char* c 100이 저장 ---> c+1=101, c+5=100+5*1=105
short* s 100이 저장 ---> s+1=102, s+6=100+6*2=112
int* i 100이 저장 ---> i+1=104, i+7=100+7*3=128
cpu와 memory 처리법
예)10번지[100]
1. 주소 보냄(cpu)
2. 주소 받음(memory)
3. 10번지 선택(memory)
4. 100을 전송(cpu)
5. 100을 수신(memory)
6. 10번지에 100을 저장(memory)
'C 언어 > 임베디드 C' 카테고리의 다른 글
함수의 호출과 실행 (0) | 2011.04.19 |
---|---|
함수 (0) | 2011.04.19 |
포인터(3) (0) | 2011.04.18 |
포인터(2)[IEEE754방식으로 확인] (0) | 2011.04.15 |
포인터(1) (0) | 2011.04.15 |