[C언어] 구조체

seonyoung53·2021년 7월 7일
0

C언어

목록 보기
2/6
#include <stdio.h> 

typedef struct Student { // 학생 구조체 정의
	char studentId[10];
	char name[10];
	int grade;
	char major[100];
} Student;

int main(void) {
	Student s = { "52120260", "원선영", 4, "컴퓨터 공학" };
	printf("학번: %s\n", s.studentId); 
	printf("이름: %s\n", s.name);
	printf("학년: %d\n", s.grade);
	printf("학과: %s\n", s.major);
	system("pause");
	return 0;
}

typedef 키워드

  • 임의의 자료형을 만들 수 있으므로 선언이 더 짧아집니다.

1. 구조체 포인터 변수에 접근하기

  • 구조체가 포인터 변수로 사용되는 경우 내부 변수에 접근할 때 화살표(->)를 사용합니다.
#include <stdio.h> 
#include <stdlib.h>

typedef struct {
	char studentId[10];
	char name[10];
	int grade;
	char major[100];
} Student;

int main(void) {
	// 동적할당 이용 (malloc)
	// s는 포인터이기 때문에 
	// 변수 s가 가르키고 있는 그 메모리 주소의 학생 구조체가 할당되어 있는것
	Student *s = malloc(sizeof(Student)); 
	strcpy(s->studentId, "52120260");
	strcpy(s->name, "원선영");
	s->grade = 4;
	strcpy(s->major, "컴퓨터 공학");
	printf("학번: %s\n", s->studentId); 
	printf("이름: %s\n", s->name);
	printf("학년: %d\n", s->grade);
	printf("학과: %s\n", s->major);
	system("pause");
	return 0;
}

=> 모두 실행결과는 동일

동적 메모리 할당
1) 배열의 경우 사전에 적절한 크기만큼 할당해주어야 함
2) 우리가 원하는 만큼만 메모리를 할당해서 사용하고자 한다면 동적 메모리 할당을 사용
3) 동적이라는 말의 의미는 프로그램 실행 도중에라는 의미입니다.

  • malloc() => 메모리 공간 확보 <stdlib.h> 라이브러리에 정의
  • 동적으로 할당된 변수는 반드시 free() 함수로 메모리 해제
  • memset(포인터, 값, 크기)

문자열
문자열은 컴퓨터 메모리 구조상에서 마지막에 널값을 포함

  • strlen : 문자열의 길이를 반환
  • strcmp: 문자열 1이 문자열 2보다 사전적으로 앞에 있으면 -1, 뒤에 있으면 1을 반환
  • strcpy: 문자열을 복사합니다.
  • strcat: 문자열 1에 문자열 2를 더합니다.
  • strstr: 문자열1에 문자열2가 어떻게 포함되어 있는지를 반환합니다.
profile
비비디바비디부

0개의 댓글

관련 채용 정보