본문 바로가기

STUDY/C10

[모각코 C언어 메이트 심화편] 헤더파일 | 📌 헤더 파일이란? h 확장자로 만들어진 친구들 : C 파일로 만들어진 오브젝트 파일에 있는 함수들의 내용을 다른 소스 파일에서 사용하기 위해서 ✅ 헤더 파일을 사용하는 이유 헤더는 C 코드에서, "선언부"들을 모아둔 파일이라고 생각하시면 돼요. ✔ header.h #include struct Score { int kor; int eng; int math; }; void PrintStruct(struct Score person); header.h 파일에는 main함수의 선언 부분을 넣어줄게요. ​ 일반적으로 헤더 파일에 선언한 뒤, 해당 코드 파일에 그 정의를 작성한답니다. ✔ header.c #include "header.h" void PrintStruct(struct Score person) { pr.. 2022. 2. 24.
[모각코 C언어 메이트 심화편] 동적 메모리 할당 | 응용문제 : 소수 갯수 출력하기 원래 동적 메모리 글을 연달아서 올렸어야 하는데 실수로 다음글을 먼저 올려버렸네요!!! 쩔 수 없이 동적 메모리 응용 문제 글을 다음 순서에 업로드합니다~~ 처음 작성한 잘못된 코드 #define _CRT_SECURE_NO_WARNINGS #include #include //#include int main(void) { int N; int* arr; int count = 0, sum = 0; printf("숫자의 갯수 : "); scanf("%d", &N); //printf("\n"); arr = (int*)malloc(sizeof(int) * N); //arr = (int*)calloc(std, sizeof(int)); for (int i = 0; i < N; i++) { //N은 숫자의 갯수 //pr.. 2022. 2. 24.
[모각코 C언어 메이트 심화편] 문자열 함수 | 버퍼 | 문자열 길이 비교 📌버퍼를 알아보자.. 버퍼링..? 버퍼링: 버퍼를 활용하는 방식, 버퍼를 채우는 동작 버퍼(buffer)라는 임시 메모리 공간 버퍼를 사용하지 않는 경우, 키 입력 시마다 프로그램에 바로 전달이 된답니다. ​ 이와 반대로, 버퍼를 사용하는 경우 키 입력을 "버퍼에 전달 및 저장"하고, 개행문자가 오거나, 버퍼가 가득 찬 경우 "버퍼를 프로그램에 전달"해요. ​ 📌글자는 내가 담당한다..문자열 함수 문자열 함수는 헤더 파일과 헤더 파일이 담당해요. 헤더 파일 ✅ gets_s, puts gets_s는 "표준 입력 스트림의 버퍼에서 문자열을 읽는 함수" 이고, puts는 "표준 출력에 문자열을 쓰는 함수" 에요. 쉽게 말해, printf나 scanf처럼 입력과 출력을 받는 함수이죠! char *gets_s(c.. 2022. 2. 24.
[모각코 C언어 메이트 심화편] 동적 메모리 할당 | 점수의 평균 구하기 1️⃣ 코드 영역 실행할 프로그램의 코드가 저장되는 메모리 공간 2️⃣ 데이터 영역 전역 변수와 static 변수가 할당되는 영역. 프로그램 시작과 동시에 메모리에 할당되고, 프로그램 종료 시까지 남아있음. 3️⃣ 스택 영역 지역변수와 매개변수가 할당되는 영역. 함수를 벗어날 때 소멸한다. 4️⃣ 힙 영역 동적 할당된 메모리들이 존재하는 공간 📌메모리 할당하는 방법 1️⃣ 정적 메모리 할당 변수 선언 장점은 메모리 누수를 걱정하지 않아도 된다 단점은 메모리 공간의 크기가 정해져 있어서, 더 큰 공간이 필요하더라도 추가해줄 수 없고, 반대로 더 작은 공간이 필요한 경우 메모리 공간의 낭비가 발생 2️⃣ 동적 메모리 할당 실행 단계에서 메모리 공간을 할당 free 함수를 통해, 동적 할당된 기억 공간을 반환.. 2022. 2. 24.
[모각코 C언어 메이트 심화편] 함수 포인터 | 사칙연산 계산기 만들기 📌넌 함수니? 포인터니? 난 함수 포인터야! 함수 포인터란, 문자 그대로 함수를 가리킬 수 있는 포인터를 의미 함수 포인터를 선언하는 방법 1️⃣ 반환 값과 매개변수가 없는 함수 void (*함수포인터이름)(); ​2️⃣ 반환 값과 매개변수가 있는 함수 반환 값이나 매개변수가 존재할 때는 아래와 같이 선언할 수 있다. 반환자료형 (*함수포인터이름)(매개변수자료형1, 매개변수자료형2, ...);. 📌함수 포인터, 왜 널 사용해야 하니? 코드의 간결성 때문! ⁜ 함수 포인터를 왜 사용하나요? ▪ CallBack 매커니즘을 구현할 때 함수를 또 다른 함수의 인자로 넘겨주기 위해 주로 사용돼요. 소스코드에서 상호 간에 함수 이름을 지정할 필요가 없는 자유를 제공해요. ▪ 동적으로 늘어나거나, 줄어드는 UI에 이.. 2022. 2. 24.
[모각코 C언어 메이트 심화편] 도전 문제 | 2차원 배열과 이중포인터 📌 2차원 배열과 이중포인터? ✅ 오늘의 문제 : 행렬 곱 구하기 ✅ 3X3 행렬 2개를 선언하고, 값을 입력받은 뒤 두 행렬의 곱을 구해보세요. 이때! 행렬의 곱이란??? 2022. 2. 24.
[모각코 C언어 메이트 심화편] 이중 포인터 | 최댓값 구하기 📌너는 누구냐.. 이중 포인터 포인터란 바로, 어떤 값의 "주소"를 가리키는 변수입니다. ​ 그럼 이중 포인터란 무엇일까요? 이중 포인터란 "포인터를 값으로 갖는 포인터"​를 의미해요. 대표사진 삭제 사진 설명을 입력하세요. 우선 num의 구조부터 알아볼게요. num은 2차원 배열로, 아래와 같이 구성돼요. 대표사진 삭제 사진 설명을 입력하세요. ​num은 num[0]의 주소 값을 가지고, num[0]은 num[0][0]의 주소 값을 가지는 셈 사진 삭제 사진 설명을 입력하세요. 2차원 배열에서 "배열의 이름의 값"은 이중 포인터​ 사진 삭제 사진 설명을 입력하세요. 📌주소 값? 그냥 값? 이중 포인터의 함수 ⭐ 정리하기 ⭐ ✔ 포인터의 주소를 저장할 땐 이중 포인터를 사용하자 ✔ 2차원 배열 또한 이중.. 2022. 2. 24.
[모각코 C언어 메이트 심화편] 이중 포인터 | 행과 열 바꾸기 앞부분에 포스팅 밀린 부분이 좀 있고, 뒤에 새로운 부분들은 계속 공부 중인데 (+포스팅 작성 중) 어떡하지?! 뒤에 포스팅을 먼저 올린순 없는데!! 라고 고민 하던 중 일단 앞부분 포스팅을 간략하게 올리기로 결정!!! 📌배열의 집합, 2차원 배열 배열 자체를 원소로 갖는 배열 ✅ 2차원 배열의 선언 자료형 배열이름[행 갯수][열 갯수]; 자료형 배열이름[행 갯수][열 갯수] = { { 값, 값, 값, ... } { 값, 값, 값, ... } ... }; 배열의 크기를 [ ]로, 배열의 값을 { }로 초기화 ✅ 인덱스 "인덱스"라고 부르는 행,열의 위치를 지정해 배열 요소에 접근할 수 있다. // 값 수정 배열이름[행인덱스][열인덱스] = 값; // 배열이 int형일 때, 값 출력 printf("%d",.. 2022. 2. 24.
[모각코 C언어 메이트 심화편] 2차원 배열 | 행과 열 바꾸기 | 꼼꼼히 살피기!!! 미치겠넹 하면서 겪은 우여곡절 코드들을 블로그에 저장해놨는데 다 날라가버렸어~ 그래도 기억을 되짚으며 포스팅! 오늘은 2차원 배열을 배우는 날! [][] 2차원 배열이란, 바로 '배열의 집합' ✅ 2차원 배열의 선언 자료형 배열이름[행 갯수][열 갯수]; 자료형 배열이름[행 갯수][열 갯수] = { { 값, 값, 값, ... } { 값, 값, 값, ... } ... }; ✅ 인덱스 // 값 수정 배열이름[행인덱스][열인덱스] = 값; // 배열이 int형일 때, 값 출력 printf("%d", 배열이름[행인덱스][열인덱스]); ✅ 2차원 배열의 크기 sizeof(배열의 이름[][]) ⭐ 정리하기 ⭐ ✔ 여러 개의 배열이 필요하면 2차원 배열을 사용하자! ✔ 배열의 값을 수정하고 싶으면? 인덱스 사용! ✔.. 2022. 2. 24.