C언어 공부/개념 공부 12

2024.01.11 <구조체 (1) 수정해야함>

17.1 구조체 학습목표 변수가 많이 필요하면 주로 배열을 쓰지만 변수들의 자료형이 다르면 배열을 만들 수 없다. 그럴 때 구조체를 사용한다. 구조체 변수는 .(점)연산자(멤버접근 연산자)로 원하는 멤버의 이름을 직접 사용한다. 구조체는 배열, 포인터, 다른 구조체 등도 멤버로 넣어 확장할 수 있다. 자료형이 같은 구조체 변수는 대입 연산이 가능하며 함수의 매개변수에 쓸 수 있다. 구조체는 멤버의 크기를 비트 단위로 설정할 수 있다. 구조체는 다양한 자료형을 하나로 묶을 수 있는 복합 자료형이다. 구분 기능 사용 예시 구조체 기본 형 선언 struct student { int num; double grade; } 변수 선언 struct student s1; 멤버 접근 s1.num = 315; 다양한 멤버..

2024.01.18 C언어 <메모리 동적할당 (3)>

학습목표 : 정수 하나를 저장하기 위해 동적 할당하는 것은 변수 선언보다 실행 시간이나 메모리 활용면에서 비효율적이다. 따라서 동적 할당은 활용 방법을 익히는 것이 무엇보다 중요하다. 입력하는 문자열의 길이에 딱 맞는 메모리 공간을 확보할 수 있다. 명령행 인수의 구현 방식을 이해할 수 있다. 동적 할당 방식이 복잡할수록 할당 영역의 반환을 꼼꼼히 살펴봐야 한다. 동적 할당을 사용하면 데이터 맞춤 프로그래밍이 가능하다. 구분 설명 상세 입력 문자열 처리 사용 예 입력 문자열의 길이에 맞는 저장 공간 확보 구현 방법 char str[80]; char* ps; ps = (char*) malloc (strlen(str) + 1); strcpy( (ps, str) ); 명령행 인수 처리 main 함수의 인수 i..

2024.01.18 C언어 <메모리 동적할당(2) 문제 풀이>

/* [문제] 하루 중 최고기온과 최저기온을 입력하여 일교차를 출력합니다. 단, 온도를 입력할 저장 공간은 동적으로 할당한다. */ #define _CRT_SECURE_NO_WARNINGS #include #include int main(void) { // 동적할당 영역을 연결할 포인터 double* high; // (최고기온 관련) double* low; // (최저기온 관련) // 동적할당 high = (double*)malloc(sizeof(double)); low = (double*)malloc(sizeof(double)); if ((high == 0) || (low == 0)) { // 동적할당 여부검사 (필수) printf("메모리가 부족합니다. \n"); exit(1); } printf("최..

2024.01.18 C언어 <메모리 동적할당(1)>

16.1 동적 할당 함수 학습목표 - 프로그램을 작성할 때 처리할 데이터 종류나 수를 장담할 수 없다면 필요한 변수나 배열의 공간을 실행 도중에 동적으로 확보하는 것이 좋다. 동적 할당한 공간은 변수와 달리 이름이 없으므로 포인터에 주소를 대입하여 사용한다. 동적 할당을 요청한 후에는 제대로 할당되었는지 반환값을 확인해야 한다. 사용이 끝난 동적 할당 공간은 재활용을 위해 반환한다. 동적 할당한 저장 공간을 배열처럼 쓸 때는 포인터가 배열명의 역할을 한다. 동적 할당한 저장 공간을 0으로 초기화하거나 크기를 바꿔 재할당하는 함수도 있다. 동적 할당은 실행 시점에 메모리 공간을 할당한다. 함수 구분 사용 예시 malloc 원형 void* malloc (unsigned int size); 기능 size 바이..

2024.01. C언어 <배열 (2)>

8.2 문자를 저장하는 배열 학습목표 : char형 배열은 문자들을 메모리의 연속된 공간에 저장할 수 있으므로 주로 문자열을 저장하는 용도로 쓰인다. char형 배열은 문자열을 저장하는 변수의 역할을 한다. char형 배열은 문자열로 직접 초기화할 수 있다. char형 배열에 문자열을 저장할 때는 대입 연산자 대신 strcpy 함수를 쓴다. char형 배열에 문자열을 터미널을 통해 입출력할 때는 scanf, gets, printf, puts 등의 함수를 쓴다. char형 배열은 문자열을 저장하는 변수와 같다. 구분 사용 예시 기능 char형 배열 초기화 char str[80] = "apple"; char형 배열은 문자열로 초기화한다. 문자열의 끝에는 널문자(NULL, \0)가 있다. 문자열 대입 char..

2024.01. <배열 (1)>

8.1 배열의 선언과 사용 학습목표 - 동일한 자료형을 저장할 저장 공간이 많이 필요한 경우 일일이 변수를 선언하는 일은 만만치 않다. 이때 배열을 사용하면 많은 변수 선언문을 간단히 대체할 수 있다. 배열을 선언하면 많은 변수를 한 번에 선언하는 효과를 볼 수 있다. 배열을 초기화 할 때는 중괄호를 사용한다. 배열은 주로 반복문으로 처리한다. 배열 전체의 크기를 구할 때 sizeof 연산자를 쓴다. 배열은 각 저장 공간을 이름과 첨자(index)로 구분한다. Q 언제 배열을 사용하느냐? 배열은 정확히 무엇이냐? A 같은 자료형의 변수를 여러 개 사용할 때 배열을 사용한다. 배열은 메모리에 저장 공간을 한꺼번에 확보하고 사용할 때는 하나씩 떼어 쓰는 방식으로 구현된다. 구분 사용 예시 기능 배열 선언 i..

2024.01.08 C언어 학원 필기 요약본 <함수 (3)>

1. 함수 함수는 이름 뒤에 소괄호 함수는 기능을 한다. printf(), scanf(), strlen(), ... 2. 함수의 사용 목적 코드를 재사용하기 위해서 3. 함수의 선언과 정의 리턴타입 함수명( ) { 코드; } 4. 함수의 선언 리턴타입 함수명( ); 5. 함수의 사용 함수명( ); ex) printf( ); (실행함수, 값으로는 안된다) ----- 리턴함수는 값으로 사용이 된다. ex) 1 + 1 = 2 num = 1 + 1; ----- 함수의 4가지 유형 매개변수 X, 리턴 X 매개변수 O, 리턴 X (외부에서 scanf 받음) (그냥 안에서 printf("출입불가능" "출입가능") 이렇게 내보내는 식) 매개변수 X, 리턴 O (내부에서 scanf 받음) (return 0 - 출입불가능..