구조체(3-2)
사용자로부터 두 점의 좌표를 입력받아, 두 점 사이의 거리를 계산하는 프로그램을 만들어 보자.
먼저, 점의 좌표를 구조체로 표현한다.
두 점 사이의 거리는 다음 공식(?)으로 계산한다.
위 사진을 기반으로 해석과 이해를 해보자.
먼저,
4 ~ 8번째 줄 : 구조체 point가 선언되었고, 이 구조체는 2개의 멤버 변수
x와 y로 정의된다.
아직 구조체 변수는 선언되지 않았음을 명심하고,
이 구조체 역시 이전 예제들처럼 함수 외에 정의되어서 소스 파일 내에서
아무 데서나 호출할 수 있다.
12번째 줄 : 구조체 point의 변수 p1과 p2를 선언하고, 선언되는 위치가 함수 내부이므로
자동 변수가 되고 따라서 초기값은 쓰레기 값이 된다.
13 ~ 14번째 줄 : x좌표의 차이를 저장할 변수 a와 y좌표의 차이를 저장할 변수 b가 선언되었다.
두 점 사이의 거리는 일반적으로 실수 값이므로 double형 변수 c를 선언했다.
16 ~ 17번째 줄 : 사용자로부터 점의 좌표 값을 입력받아
구조체 변수 p1의 멤버 변수인 x와 y에 저장된다.
19 ~ 20번째 줄 : 사용자로부터 점의 좌표 값을 입력받아
구조체 변수 p2의 멤버 변수인 x와 y에 저장된다.
이 문장에서는 구조체 변수 p1이 아니라 p2의 멤버 변수에 저장되었음을 명심하자.
22번째 줄 : x좌표 값의 차이를 계산해서 int형 변수 a에 저장한다.
이때 차이 값들이 음수가 될 수 있는데,
어차피 제곱하는 과정에서 양수로 변하기 때문에 상관없다.
23번째 줄 : y좌표 값의 차이를 계산해서 int형 변수 b에 저장한다.
이 때도 음수가 나올 수 있지만 제곱 과정에서 양수로 바뀐다.
24번째 줄 : sqrt함수는 제곱근을 계산하는 함수이다.
이 함수를 호출해서
이 공식의 대입하여 값을 계산하고, double형 변수 c에 저장한다.
참고로 sqrt 함수는 double형을 받아서 double형으로 반환한다.
이렇게 구조체의 멤버 변수 참조의 예제들을 봐보았다.
다음은 구조체의 활용부터 구조체와 배열 등을 봐보자.
'시작하지 말았어야 했던 것 > C언어 기본 문법' 카테고리의 다른 글
구조체(4-1) 구조체를 멤버로 가지는 구조체 예제 (0) | 2021.02.06 |
---|---|
구조체(4) 구조체를 멤버로 가지는 구조체 (0) | 2021.02.06 |
구조체(3-3) 구조체 변수의 멤버 변수에 데이터를 사용자로부터 입력받아 대입하기 (0) | 2021.02.06 |
구조체(3-2) 구조체 선언 및 구조체 변수 정의 그리고 구조체 멤버에 값 대입 및 멤버의 값 참조 (0) | 2021.02.06 |
구조체(3) 구조체 멤버 참조와 예제들 (0) | 2021.02.06 |