구조체(Structure)
구조체라는 것은 하나이상의 변수(포인터 변수와 배열 포함)를 묶어서 새로운 자료형을 정의하는 도구이다. 즉 구조체를 기반으로 우리는 새로운 자료형을 정의 할 수 있다.
자바를 먼저 배웠다면 이 구조체는 자바의 객체 사용방법과 흡사하다.
구조체를 정의 하는 방법은 아래와 같다.
ex)
struct person { // person이라는 이름의 구조체 정의
int num; // 정수 저장용 멤버
char str[30]; // 문자열 저장용 멤버
};
위에서 person이라는 이름의 자료형이 만들어졌다. 그렇다면 이제 이 자료형의 변수를 만들어 주어야한다.
ex)
struct person simson;
위의 예시를 보면 알겠지만 맨앞에 struct선언을 추가해야하며, 이어서 구조체의 이름과 구조체 변수의 이름을 선언 해야한다.
여기서 구조체 변수의 이름은 simson이다.
구조체 변수는 당연히 아래처럼 배열로도 선언이 가능하다.
ex)
struct person simson[2];
구조체 변수의 멤버에는 int형의 변수num과 char형의 배열 str이 존재하는데 이 둘을 사용 할 때에도 일반적인 방법과는 조금 다른다.
ex)
simson.num
simson.str
이처럼 구조체 변수를 앞에 입력후 점(.)을 찍고 멤버 변수의 이름을 적어사용한다.
아래의 간단한 코드를 작성하여 보자
#include<stdio.h>
#pragma warning(disable:4996) // scanf 보안 경고 제거용
struct person {
int num;
char str[30];
};
int main(void) {
int i;
struct person simson[2];
for (i = 0; i < sizeof(simson)/sizeof(simson[1]); i++) {
printf("이름 입력: ");
scanf("%s",simson[i].str);
simson[i].num = i;
}
for (i = 0; i < sizeof(simson) / sizeof(simson[1]); i++){
printf("========\n%d 번째 이름: ", simson[i].num+1);
printf("%s \n", simson[i].str);
}
return 0;
}
여기서 sizeof(simson)/sizeof(simson[i])는 배열의 크기를 구할때 쓰인다.
'C' 카테고리의 다른 글
C언어 '('와')' 의 짝이 맟는지 검사하는 프로그램 만들기 (1) | 2014.11.23 |
---|---|
C언어 구조체 변수의 초기화 (0) | 2014.08.17 |
C언어 문자열을 정수와 실수로 변환하자 (0) | 2014.08.10 |
C언어 문자열 비교하기(strcmp, strncmp) (0) | 2014.08.09 |
C언어 문자열 복사하여 덧붙이기 (strcat, strncat) (0) | 2014.08.07 |