책 내용 질문하기
구조체 포인터 변수 문의
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
84
조회수
262
작성일
2019-05-16
작성자
탈퇴*원
첨부파일
84페이지의 구조체 멤버의 지정에 대한 질문 사항입니다.
구조체의 포인터 변수는 일반 포인터 변수처럼 *를 사용하여 멤버를 지정할 수도 있다.
(*seoul).name = "홍길동";
(*ansan).jikwi = "과장";
(*ansan).pay = "홍길동";
질문1. 구조체의 포인터변수 멤버를 지정할 때 (*seoul).name 처럼 괄호를 무조건 써서 지정해야 하나요? *seoul.name 이렇게 지정해주면 안되는건가요?
질문2. (*ansan).jikwi = "과장"; ansan은 포인터변수가 아닌 일반변수로 선언 했는데 *을 써서 지정해 줄 수 있나요?
질문3 . 구조체의 포인터 변수가 아닌 일반 변수로 ->를 사용 하여 멤버를 지정해줄 수 있나요?
ansan->name = "홍길동"; 처럼 말이죠.
답변
2019-05-21 14:12:31
안녕하세요. 길벗수험서 운영팀입니다.
[1]
예, 불가능합니다.
구조체에 괄호를 지정하지 않으면 C언어의 구문분석기는 *(seoul.name)으로 인식해버려 오류가 발생합니다.
[2]
포인터 변수가 아닌 일반변수에 *를 사용할 수는 없습니다.
*는 주소값이 가리키는 위치의 값을 가리키는 식별자이기 때문에, *의 뒤에 붙는 변수에는 항상 주소값인 포인터가 있어야 합니다.
[3]
위와 동일합니다. -> 식별자 또한 구조체 포인터 변수에서만 사용할 수 있는 식별자입니다.
행복한 하루되세요 :)
-
관리자2019-05-21 14:12:31
안녕하세요. 길벗수험서 운영팀입니다.
[1]
예, 불가능합니다.
구조체에 괄호를 지정하지 않으면 C언어의 구문분석기는 *(seoul.name)으로 인식해버려 오류가 발생합니다.
[2]
포인터 변수가 아닌 일반변수에 *를 사용할 수는 없습니다.
*는 주소값이 가리키는 위치의 값을 가리키는 식별자이기 때문에, *의 뒤에 붙는 변수에는 항상 주소값인 포인터가 있어야 합니다.
[3]
위와 동일합니다. -> 식별자 또한 구조체 포인터 변수에서만 사용할 수 있는 식별자입니다.
행복한 하루되세요 :)