, 나는 흥미로운 예를 들어 오셨습니다 다음과 같이 우리가 구조 (C 구조)가 있다고 가정 :비교 포인터 객체 평등
struct qwe
{
int someData;
qwe *ptr;
}
나중에 일부 코드를 :
struct qwe d, *p = &d;
p->someData = 1;
p->ptr = p;
I는 다음과 같이 조작을 이용하여,이 포인터는 언어 규격에서 ==
의 정의에 기초하여, 동일한 객체를 가리 이해 :
은 콘솔 창에 True를 인쇄합니다. 이제 괜찮습니다.하지만이 두 포인터는 같은 개체가 아닙니다. 여기에서의 질문은 POINTER 평등을 검사하는 방법이 있는지에 관한 것입니다. 방법이 있다면 이제 콘솔에 아무런 출력을 생성하지 않을 것이다
struct qwe** pToPtr_1 = &p;
struct qwe** pToPtr_2 = &(p->ptr);
if (pToPtr_1 == pToPtr_2)
printf("True\n");
을 다음과 같이 나는,이 포인터에 대한 포인터를 만든 다음 ==
와 함께 그 새로운 포인터를 비교로 내가 뭔가를 할 수 알고,하지만 난 궁금해 포인터 주소를 직접 비교할 수 있습니다. 나는 이것이 (적어도 C 프로그래밍 언어와 요구에 대한 나의 현재의 이해를 바탕으로) 쓸모가 없다는 것을 이해한다. 그러나 나는 아직도 그런 기능이 C (또는 C++)에 존재하는지 알고 싶다.
구조 선언이 유효한 C 코드가 아닙니다 당신은 이전 형식 정의를 '하지 않는 한 typedef struct qwe qwe;'. –
이 두 포인터는 모두 같은 대상이 아닙니다. 무엇을 의미합니까? –
나는 그것이 끝났다고 언급하는 것을 잊었다. 수정 해줘서 고마워. – Transcendental