st->st st->top은 유효한 lvalue가 아니며, st->st st->top는 값일 뿐이며, lvalue는 참조 가능한 주소여야 한다는 점을 알려드립니다.
위키피디아
lvalue에는 얻을 수 있는 명확한 메모리 주소가 있습니다. 즉, lvalue는 변수일 수도 있고 특정 메모리 주소에 대한 포인터를 역참조한 결과일 수도 있습니다. 예를 들어, C 언어 표현식(4 9)을 실행하면 컴퓨터는 정수 값 13을 생성하지만 프로그램에서는 이 13이 컴퓨터에 저장되는 방식을 명시적으로 지정하지 않기 때문에 이 표현식은 rvalue를 생성합니다. 반면에 C 프로그램이 변수 x를 선언하고 x에 값 13을 할당하면 식 (x)는 13으로 평가되며 lvalue입니다.
왼쪽 및 오른쪽 값보다 더 중요한 질문은 스택
GOBJ
에 저장되어 있습니까, 아니면GOBJ
에 대한 포인터입니까?GOBJ* st
선언으로 판단하면GOBJ
을 저장하려고 하고,malloc
이 호출되는 방식으로 판단하면GOBJ*
을 저장하려는데 혼란스러워집니다.포인터를 저장하려면
으아악st
을GOBJ** st
으로 선언해야 하며malloc
을 캐스팅할 필요가 없습니다. 그러면 스택에 푸시하는 문장을 배열 표기법으로 작성할 수 있습니다.st->st st->top
은 유효한 lvalue가 아니며,st->st st->top
는 값일 뿐이며, lvalue는 참조 가능한 주소여야 한다는 점을 알려드립니다.위키피디아
한번 드셔보시는 건 어떨까요
으아아아