구조체로 선언된 변수는 일반적인 변수형과 마찬가지로 함수의 파라미터로 사용하는 것이 가능.
서로 같은 자료형을 사용하지만 구조체의 이름이 다른 경우에는 서로 호환이 가능한가?
구조체의 항목이 같고 구조체의 이름이 다른 두 개의 구조체는 서로 호환되지 않는다.
struct Class_A
{
char Name[20];
int Number;
};
struct Class_B
{
char Name[20];
int Number;
}
위 두 개의 구조체에서 다음과 같이 변수 선언을 했다고 치면
struct Class_A Var_A;
struct Class_B Var_B;
변수 Var_A와 Var_B는 서로 같은 항목을 갖고 있는 구조체 이지만 두 개의 변수를 Var_A = Var_B; 이렇게 사용하면 오류가 발생.
그 이유는 변수의 내부구조가 같더라도 완전히 서로 다른 자료형으로 인식되기 때문. 그러나 다음과 같이
구조체 항목을 대입하는 것은 가능.
Var_A.Number = VAr_B.Number;
#include <stdio.h>
#include <string.h>
typedef struct _Grade //구조체 정의
{
char Name[20];
int Number;
int Korean;
}Grade;
void ShowTable(Grade); //함수의 인자에 구조체를 사용
int Total; //평균점수를 구하기 위해 학생점수를 저장하는 변수를 전역변수로 지정.
int main()
{
Grade ClassOfGrade_1[3]; //구조체의 ClassOfGrade_1라는 변수 지정
char buf[20];
int i;
Total = 0;
printf("1학년 학생의 성적관리 프로그램입니다.\n");
for(i =0 ; i < 3 ; i++)
{
printf("%d 째 학생의 이름을 입력하세요. :" , i+1);
scanf("%s" , ClassOfGrade_1[i].Name);
printf("학번을 입력하세요. :");
scanf("%d", &ClassOfGrade_1[i].Number); //왜 주소로 접근하지?
printf("국어 성적을 입력하세요. :");
scanf("%d" , &ClassOfGrade_1[i].Korean);
printf("\n");
}
printf("\n=========================================\n");
printf("학번\t\t이름\t\t국어 성적\t\t\n");
for(i = 0; i <3; i++)
{
ShowTable(ClassOfGrade_1[i]);
}
printf("===================================================\n");
printf("평균\t%d\n" , Total /3);
}
void ShowTable(Grade tbl)
{
printf("[%d]번\t\t[%s]\t" , tbl.Number, tbl.Name); //구조체 Grade의 변수tbl을 사용하여
printf(" %d\n" , tbl.Korean); //출력 및 연산.
Total +=tbl.Korean;
}
구조체를 함수의 인자로 사용할 수 있다.
단 typedef를 사용할 경우는 '구조체_이름 파라미터_이름'
typedef를 사용하지 않을 경우에는 'struct 구조체_이름 파라미터_이름' 으로 struct 키워드를 넣어주어야 한다.
'About 프로그래밍!!! > C언어 무따기 정리' 카테고리의 다른 글
[무따기 C언어] 공용체 (0) | 2010.06.27 |
---|---|
[무따기 C언어]구조체 포인터 사용. (0) | 2010.06.26 |
[무따기 C언어]구조체 (0) | 2010.06.26 |
[무따기C언어] 9과(포인터의 이해) (0) | 2010.05.26 |
[무따기C언어] 4과 변수와 자료형. (0) | 2010.05.25 |