반응형

구조체(struct)란? 

 - 여러 자료형(int, double 등)을 하나로 묶어서 표현할 수 있도록 함.
 - struct [자료형] 형태. 즉, 사용자 정의 자료형을 만듦.

 - 구조체를 만들면 여러 자료형을 담고 있는 구조 하나만을 선언해서 가져올 수 있다.

 

#define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>

// x, y점은 서로 독립된 것이 아니라, 하나의 정보를 표현한다.
// 좌표점 세트(구조체)를 아래와 같이 정의
struct point	
{
	int xpos;
	int ypos;
};

// 구조체를 이용해서 좌표간 거리 구하기
int main()
{
	// 각각 x,y좌표를 지닌 2개의 구조체 생성.
	struct point pos1, pos2;
	
	double distance;


	fputs("1번째 좌표: ", stdout);
	scanf("%d %d", &pos1.xpos, &pos1.ypos);


	fputs("2번째 좌표: ", stdout);
	scanf("%d %d", &pos2.xpos, &pos2.ypos);


	// 두 좌표 입력된 값 출력
	printf("첫번째 좌표점 : %d, %d\n", pos1.xpos, pos1.ypos);
	printf("두번째 좌표점 : %d, %d\n", pos2.xpos, pos2.ypos);

	return 0;
}

위와 같은 방식으로 구조체 인스턴스(pos1, pos2)를 생성하고, 그 내부에 인자를 하나씩(pos1.xpos, pos1.ypos) 빼서 쓸 수 있다. 인스턴스에서 내부 인자에 접근하는 방법은 마침표(.)을 사이에 넣으면 된다.

반응형

<여러 타입(Type)자료형을 넣은 구조체>

    인적정보가 담긴 구조체를 생성.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

// char와 int 자료형이 섞여있는 구조체 생성 (인적 데이터)
struct person
{
	char name[20];
	char phoneNum[20];
	int age;
};

int main()
{
	//	man1 과 man2 두 구조체인스턴스 생성.
	struct person man1, man2;	

	// man1에 대한 데이터 생성. (strcpy함수를 이용해 문자열 복사)
	strcpy(man1.name, "홍길동");
	strcpy(man1.phoneNum, "010-1234-5678");
	man1.age = 23;


	// man2에 대한 데이터는 사용자 입력 받음
	printf("이름 입력: ");
	scanf("%s", man2.name);
	printf("번호 입력: ");
	scanf("%s", man2.phoneNum);
	printf("나이 입력: ");
	scanf("%d", &(man2.age));


	printf("첫번째 사람 이름: %s \n", man1.name);
	printf("첫번째 사람 번호: %s \n", man1.phoneNum);
	printf("첫번째 사람 나이: %d \n", man1.age);

	printf("두번째 사람 이름: %s \n", man2.name);
	printf("두번째 사람 번호: %s \n", man2.phoneNum);
	printf("두번째 사람 나이: %d \n", man2.age);

	return 0;
}

구조체 인스턴스 man1은 자동입력된 데이터, man2는 유저의 입력은 받는 데이터.

구조체의 Type은 char과 int가 함께 들어가있다.

 

 

<구조체 선언과 동시에 변수까지 선언하기>

    아래과 같이 main에서 구조체 인스턴스를 선언할 필요없이, 구조체 생성과 동시에 선언이 가능하다.

    } 뒤에 띄어쓰기가 반드시 있어야 한다.

서로 같은 의미 main( )밖에서도 구조체 바로 아래 선언은 가능하다.

 

 

 

<구조체 선언과 동시에 초기화 하기>

    아래과 같이 선언과 동시에 값을 넣으면, 구조체에 있는 변수 순서대로 값이 들어간다.

#include <stdio.h>

struct point
{
	int xpos;
	int ypos;
};

struct person
{
	char name[20];
	char phoneNum[20];
	int age;
};

// 초기화 방식이 배열과 유사함.
// 초기화 할 데이터들을 중괄호 안에 순서대로 나열하면 된다.

int main()
{
	struct point pos = { 10, 20 };
	struct person man = { "이승기", "010-1234-5678", 21 };

	printf("%d %d \n", pos.xpos, pos.ypos);
	printf("%s %s %d \n", man.name, man.phoneNum, man.age);

	return 0;
}

{&amp;nbsp; } 중괄호를 열고 값을 넣으면 해당값이 자동으로 들어가 초기화 한다.

 

 

반응형

+ Recent posts