2015년 7월 16일 목요일

20150717 구조체

구조체(structure)==하나 이상의 변수(포인터 변수와 배열 포함)를 묶어서 새로운 자료형을
정의하는 도구이다. 즉 구조체를 기반으로 새로운 자료형을 정의 할수있다!
struct point // 구조체 point의 정의 int==4byte 가 2개이므로 8byte
{
int xpos;
int ypos;
}; // 함수와는 다르게 중괄호의 끝에 ; (세미콜론)이 붙는다!
.이 &보다 우선순위가 높다! // scanf("%d", &point.xpos) == scanf("%d", &(point.xpos))

구조체 변수의 초기화
struct point pos={10, 20}; // pos.xpos=10, pos.ypos=20;
struct person man={"이승기", "010-1212-0001", 21};
초기화 과정에서는 문자열 저장을 위해서 strcpy함수를 호출하지 않아도 된다!

구조체 배열 // struct point arr[4];
구조체를 가리키는 포인터 == 구조체 포인터
struct point *pptr=&pos; // 구조체 포인터 변수 선언과 초기화
(*pptr).xpos=(*pptr).xpos+1; // 아래와 동일 우선순위가 *가 .보다 낮기에 소괄호 사용
pptr->xpos=pptr->xpos+1; // ->연산자는 pptr이 가리키는 변수의 멤버 xpos의 값을 +1

TYPE형 구조체 변수의 멤버로 TYPE형 포인터 변수를 둘 수 있다.
struct point{ // 환형?구조
int xpos;
int ypos;
struct point *ptr; }; // 별을 지우면 무한반복생성으로 인한 에러

구조체 변수의 주소 값과 첫 번째 멤버의 주소 값
구조체 변수의 주소 값은 구조체 변수의 첫 번째 멤버의 주소 값과 동일하다!

댓글 없음:

댓글 쓰기