블로그 이미지
안녕1999

카테고리

전체 (3067)
자바스크립트 (20)
안드로이드 (14)
WebGL (4)
변비 (17)
정치,경제 (35)
C언어,ARM (162)
컴퓨터(PC, Note Book, 윈.. (41)
전자회로, PCB (27)
유머,안웃긴,GIF,동영상 (118)
국부론60 (71)
모듈(PCB) (3)
건강 (2)
FreeCAD (25)
PADS (43)
퇴직,퇴사,구직,취업 활동 (3)
C# (86)
엑셀 (8)
워드 (0)
LabView (6)
레고 (30)
FPGA (0)
Total
Today
Yesterday

달력

« » 2025.7
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

공지사항

최근에 올라온 글

포인터로 클래스의 맴버변수1의 멤버변수2를 참조할때,

맴버변수1를 포인터로 얻어서 처리하는것이 더 빠를까?


ex1)

while(p)

{

if(p->m_Control.Device==Device) <<=== (1)

{

...

}

p=p->next;

}



ex2)

Control *pC;

pC=&(p->m_Control);

while(p)

{

if(pC->Device==Device) <<=== (2)

{

...

}

p=p->next;

}



디스어셈블

2593:             if(p->m_Control.Device==Device)

00520BD2   mov         ecx,dword ptr [ebp-4]

00520BD5   xor         edx,edx

00520BD7   mov         dx,word ptr [ecx+46h]

00520BDB   cmp         edx,dword ptr [ebp+0Ch]

00520BDE   jne         Text_setValue_device_no_func_repeate+0CEh (00520c2e)

2594:             if(pC->Device==Device)

00520BE0   mov         eax,dword ptr [pC]

00520BE3   xor         ecx,ecx

00520BE5   mov         cx,word ptr [eax+6]

00520BE9   cmp         ecx,dword ptr [ebp+0Ch]

00520BEC   jne         Text_setValue_device_no_func_repeate+0CEh (00520c2e)


결론 : 코드가 동일하다.

이유추측 : 2번째 멤버변수 참조(.)는 주소로 표현되기 때문에, 멤버변수를 나타내는 '.'은 연산자가 아니다.

Posted by 안녕1999
, |

최근에 달린 댓글

글 보관함