본문 바로가기
c

8. 구조체

by it_jangyee 2020. 2. 24.

배열 장점:집합데이터를 처리. 메모리인접. 포인터에 비해 접근속도 빠르다 
배열 단점: 한 타입저장. 크기가 정해있다.


배열로 객체 표현 힘듦=>보완=>구조체


구조체: 타입 정의 
1)타입정의 
struct 타입명{ 
   변수들... 
}; 

struct Student{ 
  int num; //멤버변수 
  char name[10]; //멤버변수 
}; 

2)변수선언 
struct 타입명 변수명; 
struct Student s1, s2; 
s1.num=10; 
strcpy(s1.name, "aaa");

#include <stdio.h>
//타입 정의. 타입 이름:Test
//구조체 안에 선언한 변수 : 멤버변수
struct Test{
    char a;
    int b;
    float c;
};

void main(){
    struct Test t1, t2;

    t1.a = 'a';
    t1.b = 10;
    t1.c = 2.34f;

    t2.a = 'b';
    t2.b = 20;
    t2.c = 4.56f;

    printf("t1.a:%c, t1.b:%d, t1.c:%f\n", t1.a, t1.b, t1.c);
    printf("t2.a:%c, t2.b:%d, t2.c:%f\n", t2.a, t2.b, t2.c);
}
#include <stdio.h>
#include <string.h>
struct Student{
    int num;
    char name[10];
};

void main(){
    struct Student s1, s2;
    s1.num=12;
    strcpy(s1.name, "aaa");

    printf("번호:");
    scanf("%d", &s2.num);
    printf("name:");
    scanf("%s", s2.name);

    printf("num:%d, name:%s\n", s1.num, s1.name);
    printf("num:%d, name:%s\n", s2.num, s2.name);
}
#include <stdio.h>
#include <string.h>

//타입 정의. 기본 타입으로만 객체 묘사 어려움. 
struct Student{ 
    int num; 
    char name[10]; 
}; 

void main(){ 
    struct Student s1, s2; 
    s1.num = 1; 
    strcpy(s1.name, "aaa"); 

    s2.num = 2; 
    strcpy(s2.name, "bbb"); 

    printf("s1.num=%d, s1.name=%s\n", s1.num, s1.name); 
    printf("s2.num=%d, s2.name=%s\n", s2.num, s2.name); 
}struct Student{
    int num;
    char name[10];
};

void main(){
    struct Student s[3];
    int i;
    for(i=0;i<3;i++){
        printf("번호:");
        scanf("%d", &s[i].num);
        printf("name:");
        scanf("%s", s[i].name);
    }
    for(i=0;i<3;i++){
        printf("num:%d, name:%s\n", s[i].num,
               s[i].name);
    }
}

3)구조체 포인터

#include <stdio.h>

struct Test{
  char a;
  int b;
};
void main(){
    struct Test t1;
    t1.a='x';
    t1.b=200;

    printf("t1.a=%c, t1.b=%d\n", t1.a, t1.b);

    struct Test *t2;
    t2 = &t1;
    printf("t2->a=%c, t2->b=%d\n", t2->a, t2->b);

    t2->a = 'z';
    t2->b = 300;
    printf("t1.a=%c, t1.b=%d\n", t1.a, t1.b);
}

'c' 카테고리의 다른 글

9. 메모리 동적 할당  (0) 2020.03.19
7. 입출력  (0) 2020.02.19
6. 포인터  (0) 2020.02.17
5. 함수  (0) 2020.02.12
4. 배열  (0) 2020.01.22

댓글