구조체에 대한 고찰2(구조체와 printf)
어제에 이은 구조체의 대한 고찰 2번째 시간이다.;
역시나 인터넷엔 고수들이 많은 것 같다는 것을
다신 한번 느끼게 해준 시간이다.
음... 나의 궁금증은 이것이다.
#include <stdio.h>
typedef struct Test_Struct{
int x;
int y;
}TestStruct;
TestStruct TS={22,33};
int main()
{
printf("%d %d",TS,TS.x);
return 0;
}
이렇게하면 결과는 22 33이 나오게 된다.
printf("%d %d",&TS,&TS.x);
을 해본다면 결과는 분명히 두개 똑같은 주소값을 가진다.;</p>
도데체 똑같은 주소값에 다른 값이 나온다니;; 어떤 인터넷의 고수분이 명쾌한 답변을 주셨다. 위의 예제의 구조체의 크기는 4*2=8바이트였다.; 하지만 %d가 뽑아 낼수있는량은 4바이트;</p>
그러므로 %d그리고 %d가 뽑아내는 총량은 8바이트이다. 원칙상으로 이렇케 안쓰지만 printf("%d %d %d",&TS,&TS.x);</p>
이렇케 %d를 하나 더 넣는다면 22 33 22라는 결과 값을 나오게 된다. 원칙상 printf의 처음 ""(따옴표)안의 %d같은 것들의 수와 뒤의 변수와의 수가 일정해야 되는데</p>
그렇지 않아도 된다는 것과</font> %d는 뒤의 있는 한 변수의 크기만큼 모두 읽어 올때까지 </p>
쓰이고 끝났다면 다음 변수를 읽어 온다는 것; </font>
</font>
그런글을 올리고 다음 날
</font>
그러므로 TS,TS.x중 TS.x값은 나오지 않는 다는 것이다.
</font>
printf의 원리(?)가 우리가 보통 배울때와 다른 다는 것을 알게 되었다.