작성
·
166
1
1.printf("%td",ptr3-ptr1);
에서
ptr3-ptr1의 값의 서식지정자가 %d가 아니라 %td라는것은 ptr3-ptr1 의 자료형이 주소의 자료형처럼 정수이기는 하나 완벽히 정수는 아닌 그런 개념인건가요 ?
아니면 그냥 %d로 서식이 지정되는 정수형인건가요?
2. 포인터끼리의 동치여부를 비교할때 캐스팅하면 오류가 사라지는경우에서 질문있습니다.
int a=5;
int ptr_a=&a;
double d=3.14;
double*ptr_d=&d;
if(ptr_a == ptr_d ) 에서 워닝을 막기위해
if(ptr_a == (int*)ptr_d) 또는 if((void*)ptr_a == (void*)ptr_d) 이렇게 캐스팅 한다 하셨는데
그럼 이렇게 포인터를 캐스팅시 포인터의 대상이 되는 변수는 캐스팅하는 자료형으로 자료형과 값 모두 변해버리나요?
(ptr_d 를 int 로 캐스팅시 변수 d는 int형이되고 값이 3으로 변경 . ptr_a 와 ptr_d 를 void로 캐스팅시 변수 a와 b는 void형이되고..그런데 void형이라는 변수가있나요?? )
감사합니다.
답변 1
1
1. 아래와 같은 질문이네요.
2. 워닝을 읽어보시면 아마 설명이 있었을겁니다. 보통 주소를 비교하는 경우는 위험하기 때문에 주소의 비교가 필요하도록 프로그래밍하는 것은 피하는게 좋습니다.