본문 바로가기

전체 글

(64)
([C언어] 24강) "자동적 형변환"과 "명시적 형변환" 안녕하세요! 잭클입니다! 이번 시간에는 자동적 형변환과 명시적 형변환에 대해서 배울건데요 (약간 늦은 감이 있네요 뒤죽박죽 순서 죄송합니다..ㅠㅠ) 자 우선 어렵지 않으니 바로 코드부터 보시죠! #include int main() { char c = 'A'; int number = c; printf("%d",number); } 자 이 코드의 실행 결과는 무엇일까요? 에러가 난다고요? 그럴 것 같지만 아닙니다. 한번 실행해보죠 65가 출력되네요! 왜죠?? 바로 "자동적 형변환" 때문입니다! c에는 char형의 'A'값이 들어있습니다 int형인 number에 c를 넣으려 하니 자동으로 char형 값이 int형으로 형변환되어 'A'의 아스키코드 값인 65가 number변수로 할당되게 됩니다! 이처럼 자동적으로..
([C언어] 23강) 메모리의 동적할당 (malloc, calloc, realloc, free) 안녕하세요 잭클입니다. 이번시간에는 메모리의 동적할당에 대해 배워볼까 하는데요! 우선 우리가 배열은 포인터다 라는 개념을 알고있으니 int arr[4]; int * ptrArr = arr; 이 코드의 의미를 알고있을겁니다. 자 그럼 아래 코드를 한번 보시죠 int arr; int * ptrArr = &arr; 자 위 코드를 보시면 1번코드 2번코드의 ptrArr은 모두 int 포인터형 변수라는것을 알 수 있습니다 하지만 두코드 모두에 ptrArr[1];을 해주면 두번째코드에서만 오류를 발견하게됩니다. 어차피 포인터는 자신이 포인터인것만 기억할뿐, 배열이라는것은 모를텐데 왜 둘의 결과가 다른걸까요? 이유는 이렇습니다. 1번코드에서는 4개 배열인 arr이 생성되면서 메모리에서 4개의 공간을 내주게 됩니다. ..
([C언어] 22강) 파일 입출력 - 쓰기 (fputs) 저번시간에 배웠던 fgets기억하시나요? https://jeckl.tistory.com/34 ([C언어] 21강) 파일 입출력 - 읽기 (fopen, fgets, fseek, feof, fclose) 이번 강좌에서는 파일 입출력을 배울겁니다. 파일 입출력이란 뭘까요?? 우리는 흔히 텍스트파일, 엑셀파일, 지금은 잘 모르실 제이슨파일 등등 많은 종류의 파일을 사용합니다. 이 파일들을 읽어서 프로그램에 적.. jeckl.tistory.com 이전강좌를 듣고오셨다는것을 가정하고 설명하겠습니다 꼭 보고와주세요~ fgets와 완전히 반대 되는 행동을 하는 함수가 fputs입니다 fputs의 사용법은 다음과 같습니다 fputs(텍스트, 파일); 이렇게 하시면 되는데요 한번 해볼까요? 자 우선 저번 강좌때 설명했던것..
([C언어] 21강) 파일 입출력 - 읽기 (fopen, fgets, fseek, feof, fclose) 이번 강좌에서는 파일 입출력을 배울겁니다. 파일 입출력이란 뭘까요?? 우리는 흔히 텍스트파일, 엑셀파일, 지금은 잘 모르실 제이슨파일 등등 많은 종류의 파일을 사용합니다. 이 파일들을 읽어서 프로그램에 적용을 시키는것과 프로그램에 있는것을 새로 텍스트파일로 저장하는것 두가지를 해볼거고 이를 파일 입출력 이라고 하겠습니다 입력이란 파일을 읽는거고 출력이란 저장하는걸 말하겠죠?? 자 그럼 오늘은 파일 입출력중 입력에 대해 한번 알아볼까요~? 자 우선은 파일을 사용하는법을 알려드리겠습니다. 파일을 사용하기 위해서는 fopen함수를 사용해야합니다 fopen함수의 사용법은 아래와 같습니다 fopen(경로, 모드); 이 코드는 FILE * 형의 값을 반환해줍니다. 사용할 파일의 경로와 모드를 넣으면 되는데요 경로는..
버퍼란? "아오.. 진짜 버퍼링 왜이러냐 짜증나네.." 다들 한번쯤 해본 말 아닌가요? 영상볼때 나오는 그 빙글빙글표시.. 으.. 상상만해도 짜증나는데요 이를 우리는 "버퍼링" 이라고 부릅니다. 오늘은 그 버퍼링 이라는것을 배워볼겁니다. 우리가 흔히 쓰는 컴퓨터나 핸드폰 등에는 버퍼 라는 공간이 들어있습니다. 자 상상을 해볼게요, 우리가 핸드폰으로 인터넷에서 동영상 하나를 본다고 칩시다. 와이파이 연결하고 동영상을 클릭을 했어요. 근데 인터넷이 느려서 동영상 정보가 핸드폰으로 들어오는 속도가 늦다면 어떻게 될까요? 동영상에서는 "가나다라마바사 아자차카타파하" 라고 말하는 동영상인데 인터넷이 느리면 "ㄱ..ㅏ나...ㄷ......ㅏ" 이런식으로 계속 끊길겁니다 상상만 해도 짜증나죠.. 이를 보완한 방법이 바로 "버퍼..
([C언어] 20강) static과 const 이번 강좌에서는 static과 const 스태틱과 콘스트를 배워볼건데요 스태틱과 콘스트는 뭘까요? 자 첫번째 static부터 배워보도록 하겠습니다. static과 const는 모두 변수나 함수 등을 꾸며주는 건데요 그중에 static은 고정! 이라는 뜻을 가지고있죠 우선 다음 코드를 보시죠 #include int test() { static int a = 0; printf("%d", a); a = 3; } int main() { test(); test(); } 이 코드를 실행하면 어떻게될까요? 00이 출력될것같죠? 아닙니다. static은 고정이라는 뜻, 즉 test함수가 처음 실행될때 static변수인 a가 생성되고 0으로 할당됩니다. 그리고 static변수는 다른 일반 지역변수와 달리 해당 함수가 종..
([C언어] 19강) 재귀함수 이번 강의에서는 다소 늦은 감이 있지만 재귀함수에 대해서 배워볼까 하는데요 재귀함수란 "함수 내에서 자기 자신을 호출하는 함수" 라고 외워주시면 되겠습니다 재귀함수의 생김새를 한 번 볼까요?? int loopFunction() { loopFunction(); } 이런 형식의 함수를 재귀함수 라고 볼 수 있습니다. 하지만, 이 코드에서 loopFunction함수를 사용하려 한다면 어떻게 될까요? 지 혼자 뭘 막 하다가 에러가 나버립니다 (-1073741571코드로 종료, 정상이라면 0으로 종료되어야함); 왤까요?? 방금 짠 코드는 while문에 인자로 1을 넘겨준것과 같습니다 "무한루프" 라고하죠 무한하게 계속 실행되다가 "스택오버플로우"라는 오류가 나며 종료됩니다. 더이상 실행할수없을만큼 스택이 다 쌓였..
([C언어] 18강) 구조체 이번 강좌에서는 구조체에 관해 배울것입니다 구조체란 쉽게 말하면 몇가지의 변수를 하나로 묶어 새로운 타입을 만들어 내는것이라고 설명할 수 있겠네요! 구조체를 만드는법은 다음과 같습니다 struct 구조체이름 { //구조체의 내부 변수들 목록 }; 이렇게 해주면 됩니다! 다만 구조체는 함수 내에 만드는게 아닌 함수 밖에 만들어주셔야하고, 우리 절차지향 프로그래밍 얘기때 했었던 말처럼 int main() { //여기서는 구조체 a 사용 불가능 } struct a { }; struct a { }; int main() { //여기서는 구조체 a 사용가능 } 이거 꼭 기억해주세요! 구조체는 모든 함수에서 공통적으로 알아야 할것이라고 생각하고 그러므로 함수의 바깥쪽에 선언해야하는겁니다. 그럼 구조체 Student를..