2016. 4. 25. 16:55ㆍ네트워크 보안 수업/C언어
구조체(struct)
- 사용자 정의 데이터 타입
- 기본 타입외에 사용자가 직접 데이터 타입을 정의할 수 있다.
- 배열의 단점: 같은 타입의 연속
ex)
성적: 정수, 실수, 이름, ...(x)
구조체의 정의
struct 구조체 이름{
int x;
int y;
double d;
member...
};
* 구조체의 멤버는 어떠한 것도 올 수 있다.(함수는 제외)
ex)
일반변수, 포인터 변수, 배열, 구조체, ...
구조체의 선언
<struct 구조체 이름> <변수 이름>;
int a;
성적 처리
- 한 학생의 국어, 영어, 수학, 총점, 평균
- 학생의 이름
struct student {
int lang;
int eng;
int math;
int total;
float avg;
char name[10];
};
* 구조체의 멤버는 초기화 될 수 없다.
struct student stu1;
- 변수의 크기
- 변수의 주소
- 변수의 값
구조체는 4바이트 단위로 정렬됨
구조체 변수의 초기화
struct student stu1 = {0,};
#include <stdio.h>
struct student {
int lang;
int eng;
int math;
int total;
float avg;
char name[10];
};
int main(int argc, char *argv[])
{
struct student stu1={0,};
printf("stu1 size: %d \n",sizeof(stu1));
printf("stu1 addr: 0x%08x \n", &stu1);
printf("input lang: ");
scanf("%d", &stu1.lang);
printf("input eng: ");
scanf("%d", &stu1.eng);
printf("input math: ");
scanf("%d",&stu1.math);
printf("input name: ");
scanf("%s", stu1.name);
printf("stu1 lang: %d \n", stu1.lang);
printf("stu1 eng : %d \n", stu1.eng);
printf("stu1 math: %d \n", stu1.math);
printf("stu1 name: %s \n", stu1.name);
return 0;
}
구조체 배열
- 구조체 타입의 연속된 공간
int arr[10]
struct student stu[10];
구조체 포인터
- 구조체 변수를 인자로 가지는 함수
- 동적 메모리
* 구조체 변수는 일반 변수와 동일하게 사용 가능
#include <stdio.h>
struct student {
int lang;
int eng;
int math;
int total;
float avg;
char name[10];
};
void print_stu(struct student *temp)
{
printf("lang: %d \n", (*temp).lang);
}
int main(int argc, char *argv[])
{
struct student stu1={10,20,30,0,0,"jone"};
print_stu(&stu1);
return 0;
}
#include <stdio.h>
struct student {
int lang;
int eng;
int math;
int total;
float avg;
char name[10];
};
void print_stu(struct student *temp)
{
printf("temp[0] lang: %d \n", temp[0].lang);
printf("temp[0] eng : %d \n", temp->eng);
printf("temp[1] lang: %d \n", (temp+1)->lang);
printf("temp[1] lang: %d \n", temp[1].lang);
}
int main(int argc, char *argv[])
{
struct student stu[10]={0,};
stu[0].lang=20;
stu[0].eng=30;
stu[1].lang=50;
print_stu(stu);
return 0;
}
학생 성적 처리 프로그램 작성
- 학생 3명의 국어, 영어, 수학 성적의 총점과 평균을 구하는 프로그램을 작성
#include <stdio.h>
struct student {
int lang;
int eng;
int math;
int total;
float avg;
char name[10];
};
void input_score(struct student *temp)
{
int i=0;
for(i=0;i<3;i++){
printf("input name: ");
scanf("%s",&temp[i].name);
printf("%d. input lang, eng, math: ",i+1);
scanf("%d %d %d",&temp[i].lang,&temp[i].eng,&temp[i].math);
temp[i].total=temp[i].lang+temp[i].eng+temp[i].math;
temp[i].avg=temp[i].total/3.0;
}
}
void print_score(struct student *temp)
{
int i=0;
for(i=0;i<3;i++){
printf("name: %s \n", temp[i].name);
printf("lang: %d \n", temp[i].lang);
printf("eng : %d \n", temp[i].eng);
printf("math: %d \n", temp[i].math);
printf("total: %d \n, avg: %0.2f \n", temp[i].total, temp[i].avg);
}
}
int main(int argc, char *argv[])
{
struct student stu[3]={0,};
input_score(stu);
print_score(stu);
return 0;
}
'네트워크 보안 수업 > C언어' 카테고리의 다른 글
네트워크 보안 수업 19일차 - 코리아 정보보안 IT 학원 (0) | 2016.04.22 |
---|---|
네트워크 보안 수업 18일차 - 코리아 정보보안 IT학원 (0) | 2016.04.21 |
네트워크 보안 수업 17일차 - 코리아 정보보안 IT학원 (0) | 2016.04.20 |
네트워크 보안 수업 16일차 - 코리아 정보보안 IT학원 (0) | 2016.04.19 |
네트워크 보안 수업 15일차 - 코리아 정보보안 IT학원 (0) | 2016.04.18 |