C/기초

구조체 활용

appmaster 2019. 7. 30. 17:41
#include <stdio.h>
#include <math.h>

struct point {
	int x;
	int y;
};

void comparePoint(struct point p1, struct point p2) {
	if (p1.x == p2.x && p1.y == p2.y) {
		printf("p1과 p2와 같습니다.");
	}
} // 이렇게 함수를 사용하는것이 더 체계적이다. 
  // 왜냐하면 point라는 구조체 하나만 비교를 할 수있는 함수이기 때문이다.

int main(void) {
	struct point p1, p2;

	p1.x = 30;
	p1.y = 10;

	p2.x = 30;
	p2.y = 10;

	/*
	if(p1 == p2){
	printf("p1과 p2는 같습니다");
	} 라는 표현이 안된다. p1과 p2자체는 비교가 안되기 때문이다.*/

	if (p1.x == p2.x && p1.y == p2.y) {
		printf("p1과 p2는 같습니다\n");
	}

	comparePoint(p1, p2); // 이렇게 매인함수에서 함수만 호출하니까 훨씬 깔끔하다.

	return 0;
}

 

 

 

 

만약이곳에 printf하여 출력하지 않으면 값은 당연히 나오지않을것이다. 하지만 프로그램상에 값들이 다 저장되어있다.(즉 램에 일시적으로 학생들의 정보들이 다 저장되어 있다는 것이다.) 그것을 확인하기위해 for문을 또 활용해서 출력을 하면된다.

#include <stdio.h>
#include <math.h>
#define SIZE 5

struct student {
	int number;
	char name[20];
	double grade; // GPA -> 학점
};


int main(void)
{
	struct student list[SIZE];
	int i;

	for (i = 0; i < SIZE; i++) {
		printf("학번을 입력해주세요 : ");
		scanf("%d", &list[i].number);
		printf("이름을 입력하세요 : ");
		scanf("%s", &list[i].name);
		printf("학점을 입력하세요 : ");
		scanf("%lf", &list[i].grade);
	}

	for (i = 0; i < SIZE; i++) {
		printf("학번 : %d, 이름 : %s, 학점 : %lf\n", list[i].number, list[i].name, list[i].grade);
	}

	return 0;
}

입력받은값을 출력하기. 이렇게 구조체를 활용하면 체계적으로 값을 입력하고 출력할 수 있다.

'C > 기초' 카테고리의 다른 글

동적 메모리  (0) 2019.08.01
파일 입출력  (0) 2019.08.01
구조체  (0) 2019.07.30
문자열  (0) 2019.07.30
포인터  (0) 2019.07.26