참고 문서 |
---|
구조체 포인터란?
- 포인터 변수를 통하여 구조체 변수에 접근하겠다는 의미
- 구조체 포인터 변수도 일반 포인터 변수와 마찬가지로 변수명 앞에 '*'를 붙여 선언한다.
구조체 포인터의 선언 형식
struct 구조체 자료형명 { 자료형 멤버1; 자료형 멤버2; ... 자료형 멤버N; } *변수명; 또는 struct 자료형명 *변수명;
구조체 포인터 변수의 선언 예
struct A { char name[20]; int age; } st; //st는 일반 구조체 변수 struct A *ptr; ptr=&st; gets(ptr->name);
구조체 포인터 변수를 사용하여 멤버에 접근할 때는 "->" 연산자를 사용한다.
구조체 포인터 변수의 이해
#include <stdio.h> int main(void) { struct A { char name[20]; int age; } st; struct A *ptr; ptr=&st; printf("st : %d, ptr : %d \n", sizeof(st), sizeof(ptr)); printf("성명 ? "); //gets(st.name); gets(ptr->name); printf("나이 ? "); //scanf("%d", &st.age); scanf("%d", &ptr->age); printf("%s, %d \n", ptr->name, ptr->age); return 0; }
구조체 포인터 배열과 구조체 포인터 변수
#include <stdio.h> int main(void) { typedef struct member { char name[20]; int age; } MEMBER; MEMBER person[30], *ptr; int i, count; ptr = person; for(i=0; i<30; i++) { printf("%d, 이름 ? (입력종료:end) ", i+1); gets(ptr->name); if(!strcmp(ptr->name,"end")) break; printf(" 나이 ? "); scanf("%d%*c", &ptr->age); ptr++; } count = i; printf("count = %d \n", count); for(i=0; i< count; i++) printf(" name : %s age : %d \n", person[i].name, person[i].age); printf("\n"); return 0; }
중첩된 구조체(nested structure)란?
- 구조체가 다른 구조체를 포함하고 있는 형태
- 구조체 자료형에 다른 구조체 자료형이 하나의 멤버로 선언된 형태
중첩된 구조체의 예
struct PERSONAL { char addr[64]; char telno[16]; int age; }; struct MEMBER { int num; char name[20]; struct PERSONAL info; } employee;
중첩된 구조체의 이해
#include <stdio.h> int main(void) { struct PERSONAL { char addr[64]; char telno[16]; int age; }; struct MEMBER { int num; char name[20]; struct PERSONAL info; } employee; printf("구조체의 크기 : %d \n", sizeof(employee)); employee.num = 1; printf("성명 ? "); gets(employee.name); printf("주소 ? "); gets(employee.info.addr); printf("전화번호 ? "); gets(employee.info.telno); printf("나이 ? "); scanf("%d", &employee.info.age); printf("%d, %s, %s, %s, %d \n", employee.num, employee.name, employee.info.addr, employee.info.telno, employee.info.age); return 0; }
댓글 0
번호 | 제목 | 날짜 | 조회 수 |
---|---|---|---|
» | 구조체 포인터 | 2014.06.15 | 931 |
42 | 구조체의 선언과 데이터 입·출력 | 2014.06.15 | 3084 |
41 | 함수 포인터 | 2014.06.15 | 447 |
40 | 배열과 포인터 | 2014.06.15 | 406 |
39 | 포인터 연산 | 2014.06.15 | 384 |
38 | 포인터 변수 | 2014.06.15 | 414 |
37 | 데이터 정렬 | 2014.06.15 | 424 |
36 | 배열 초기화 | 2014.06.14 | 630 |
35 | 2차원 배열 | 2014.06.14 | 670 |
34 | 문자열 처리 함수 | 2014.06.14 | 412 |
33 | 문자열 입출력 함수 | 2014.06.14 | 442 |
32 | 접근 수정자 | 2014.06.14 | 824 |
31 | 전역 변수 | 2014.06.14 | 308 |
30 | 지역 변수(local variable) | 2014.06.14 | 295 |
29 | 변수와 메모리 저장 위치 | 2014.06.14 | 428 |
28 | 비트 연산자 | 2014.06.14 | 288 |
27 | 관계 연산자와 논리 연산자 | 2014.06.14 | 472 |
26 | 증감 연산자 | 2014.06.14 | 319 |
25 | printf() 함수의 형식 지정자 | 2014.06.14 | 7522 |
24 | 열거 형 변수의 이해 | 2014.06.14 | 465 |