본문으로 바로가기

C언어 20일차(구조체)

category 스마트팩토리/C언어 2020. 11. 5. 13:37

앞에 struct를 넣어야만 구조체가 된다.(C언어일경우)

 

#include<stdio.h>
#include<string.h>
#pragma warning(disable: 4996)

#define MAX_NAME 20

struct STUDENT
{
	char m_name[MAX_NAME];
	int m_eng;
	int m_math;
	float m_average;
};

int main()
{
	struct STUDENT std;
	int iTemp;

	printf("Please enter student name :");
	//scanf("%19s",std.m_name);
	//gets(std.m_name, MAX_NAME, stdin);
	fgets(std.m_name, MAX_NAME,stdin);
	iTemp = strlen(std.m_name);
	//std.m_name[iTemp - 1] = 0;
	std.m_name[strlen(std.m_name) - 1] = 0;


	printf("Please enter english score :");
	fflush(stdin);
	scanf_s("%d", &std.m_eng);

	printf("Please enter math score :");
	fflush(stdin);
	scanf_s("%d", &std.m_math);

	std.m_average = (float)(std.m_eng + std.m_math) / 2;

	printf("stdent name : %s\n", std.m_name);
	printf("average : %6.3f\n", std.m_average);

	return 0;
}

Tip

여러가지 Type을 묶으려면 struct를 사용합니다.

한가지 Type을 묶으려면 배열를 사용합니다.

struct에 행위정보를 넣게 되면 객체언어의 Class가 된다.

 

 

struct는 main위에 써야 확인이 가능합니다.

struct Test는 8바이트를 차지하고 있다. int a,int b를 가지고 있기 때문입니다.

struct Test*는 4바이트를 차지합니다. 포인터변수이기 때문입니다.

pTest에 aTest의 주소값을 넣게 되면 값을 출력할때 ->를 넣어서 출력하게 됩니다.

밑에 보시면 이해가 빠르실거라고 생각합니다.

 

#include<stdio.h>

struct Test
{
	int a;
	int b;
};


int main()
{

	struct Test	aTest;
	struct Test*	pTest;

	aTest.a = 100;
	aTest.b = 200;
	pTest = &aTest;

	printf("aTest.a : %d\n",aTest.a);
	printf("aTest.b : %d\n",aTest.b);

	printf("pTest->a : %d\n", pTest->a);
	printf("pTest->b : %d\n", pTest->b);

	printf("aTest Size : %d\n", sizeof(aTest));
	printf("pTest Size : %d\n", sizeof(pTest));

	return 0;
}


 

'스마트팩토리 > C언어' 카테고리의 다른 글

C언어 18일차(2차원 배열)  (0) 2020.10.31
C언어 17일차(2차원 배열)  (0) 2020.10.29
C언어 16일차(컴파일러)  (0) 2020.10.28
C언어 15일차(배열)  (0) 2020.10.27
C언어 14일차(배열)  (0) 2020.10.23