728x90
- 여러 개의 데이터를 하나로 묶어서 사용할 수 있도록 하기 위해 만들어짐
- 객체지향 프로그램의 모체가 됨
- 기존의 자료형으로 새로운 자료형을 만듬
더보기
자료형: char, int, double..
배열(array) : 형(type)이 같은 데이터를 하나의 묶으으로 처리하고자 할 때 사용하는 변수
구조체(structure): 한 개의 자료가 여러 개의 데이터 형(data type)으로 구성되는 복합 데이터형이다
#include <stdio.h>
struct person {
//멤버 변수 : 구조체를 구성하는 요소
char name[20]; //20바이트
char phoneNum[20]; //20바이트
int age; //4바이트
};
int main() {
struct person stu1 = { "허미유","010-0000-0000", 20 };
printf("이름 %s\n", stu1.name);
printf("번호 %s\n", stu1.phoneNum);
printf("나이 %d\n", stu1.age);
printf("-------------------\n");
}
person이라는 이름의 구조체를 만들었다. 구조체 안에는 이름과 전화번호, 나이를 나타내는 자료형들이 있다.
메인함수에서 프린트할 사람의 이름, 전번, 나이를 넣고 프린트해보았다
이거 넣을때는 {} 안에 순서대로 이름 전번 나이 넣어주면됨
#include <stdio.h>
struct person {
//멤버 변수 : 구조체를 구성하는 요소
char name[20]; //20바이트
char phoneNum[20]; //20바이트
int age; //4바이트
};
int main() {
struct person stu2; //구조체를 사용할수 있도록 변수선언
strcpy(stu2.name, "허리아");
strcpy(stu2.phoneNum, "010-1111-1111");
stu2.age = 14;
printf("이름 %s\n", stu2.name);
printf("번호 %s\n", stu2.phoneNum);
printf("나이 %d\n", stu2.age);
printf("-------------------\n");
}
이런 식으로 따로따로 값을 입력받을수도 있다.
나오는 모양은 똑같다
#include <stdio.h>
struct person {
//멤버 변수 : 구조체를 구성하는 요소
char name[20]; //20바이트
char phoneNum[20]; //20바이트
int age; //4바이트
};
int main() {
//두 사람이 한꺼번에 나오게 하는거
int i;
struct person stulist[2] = {
{"정수아","010-1233-4433",18},
{"허푸들","010-2222-3333",11}
};
for (i = 0; i < 2; i++) {
printf("이름: %s, 번호: %s, 나이: %d\n",
stulist[i].name, stulist[i].phoneNum, stulist[i].age);
}
printf("-------------------\n");
}
두 사람을 한꺼번에 출력하기 위해서 for문을 쓴 모습이다.
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
struct person {
//멤버 변수 : 구조체를 구성하는 요소
char name[20]; //20바이트
char phoneNum[20]; //20바이트
int age; //4바이트
};
int main() {
//for 문으로 받아서 여러개 출력하는거
struct person stulist1[2];
for (i = 0; i < 2; i++) {
printf("이름, 번호, 나이 입력: \n");
scanf("%s%s%d", stulist1[i].name, stulist1[i].phoneNum, &stulist1[i].age);
}
for (i = 0; i < 2; i++) {
printf("이름: %s, 번호: %s, 나이: %d\n",
stulist1[i].name, stulist1[i].phoneNum, stulist1[i].age);
}
}
이제 직접 사람정보를 입력해서 불러와보자. 똑같이 for문 사용 후 scanf를 사용했다.
vs특성상 scanf_s를 사용했어야 했는데 이러면 두 값을 받지 못한다.
그래서 scanf를 씀. 그럼 에러가 뜨는데 이 에러를 무시하기 위해서
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
를 썼음. 아예 무시되서 잘 출력됨
여기서 포인터를 사용해서 값을 바꿀수도 있다.
포인터 형태면 ->를 쓰면됨
#include <stdio.h>
struct person {
//멤버 변수 : 구조체를 구성하는 요소
char name[20]; //20바이트
char phoneNum[20]; //20바이트
int age; //4바이트
};
int main() {
struct person stu1;
strcpy(stu1.name, "허리아");
strcpy(stu1.phoneNum, "010-1111-1111");
stu1.age = 14;
struct person* ptr; //구조체 포인터
ptr = &stu1;
ptr -> age = 25;
printf("이름: %s\n", ptr->name);
printf("전번: %s\n", ptr->phoneNum);
printf("나이: %d\n", ptr->age);
}
이렇게 age를 포인터를 사용해서 25로 주입했더니 14가 25로 변하는 ㅁㅐ-직을 볼수있다
728x90
'언어는 과-학인가요? > c언어' 카테고리의 다른 글
(c언어) time 과 random (0) | 2020.09.19 |
---|---|
(c언어) typedef (0) | 2020.09.19 |
(c언어) 함수 호출 - 변수 값 위치 바꾸기 swap (0) | 2020.09.12 |
(c언어) 배열과 포인터(array and pointer) (0) | 2020.09.12 |
(c언어) 배열과 포인터 (0) | 2020.09.12 |