본문 바로가기

전체 글

(64)
([C언어] 17강) 포인터의 포인터와, 포인터의 메모리크기 이번 시간에는 포인터의 포인터를 배워보겠습니다 자 우선 생각해보죠, 우리는 배열은 포인터다 라는 개념을 배웠었습니다 그럼 배열의 요소로 배열을 가지고있는 배열 즉, 2차원배열은 어떻게 이뤄져있는걸까요? 포인터들을 가지고있는 포인터라.. 네 바로 포인터의 포인터입니다ㅋㅋ 포인터가 어떤 요소의 주소였다면 포인터의 포인터는 그 주소값이 저장된곳의 주소입니다ㅋㅋㅋ 마치 마트료시카 인형같죠ㅋㅋ 포인터의 포인터형은 다음과 같이 표시합니다 자료형 ** 변수이름; 자 우리는 지난 시간에 콜 바이 벨류와 콜 바이 레퍼런스에 대해 배웠습니다. 그런데 만약에 우리가 배열을 함수의 매개변수로 보내고 싶다면 어떻게 해야할까요? #include int test(int arr[]) { printf("%d", arr[3]); } i..
([C언어] 16강) Call by value와 Call by reference 포인터를 배우면 꼭 배우는 개념이 바로 콜 바이 벨류 (Call by value)와 콜 바이 레퍼런스 (Call by reference)입니다 이 두 가지에 대해 배워보겠습니다. 자 우선 아래 코드를 보시죠 #include void Test(int n) { n = 34; } int main() { int a = 0; Test(a); printf("%d",a); } 자 이 코드의 수행 결과는 뭘까요? 34가 출력될까요? 아니요, 0이출력됩니다. 왜냐하면 Test함수에 넘겨주는 매개변수는 '값'을 넘겨주는 것이기 때문입니다 변수 a 자체를 넘겨주는 게 아니라 변수 a의 값인 0을 Test의 n변수에 할당해주는 것이기 때문에 저 코드를 수행해도 a의 값은 변하지 않고 printf함수에 의해 0이 출력됩니다. ..
([C언어] 15강) 포인터와 어드레스연산자 와.. 여기까지 오신 여러분 수고 많으셨습니다. 이제부터 C언어에서 가장 어려운 개념인 포인터에 대해 공부할건데요 (솔직히 진심으로 포인터 강좌하기 싫어서 내일할까 하고 미루려다가 한번 미루기 시작하면 끝도없이 미룰게 포인터인것같아서 그냥 꾹 참고 강좌 해보려구요) 서론을 좀 길게 해보자면 포인터에는 스토리가 있습니다. 제가 프로그래밍을 배우러 다녔을때 처음에 학생수가 한 반에 15명으로 시작했어요 그중에서 두명정도가 지금까지 여러분이 배우신것들을 배우면서 너무 자기랑 안맞는것 같다고 중도 포기를하고 나가버리시더군요.. 그리고나서 이제 포인터를 시작하는데 프로그래밍 선생님이 포인터 시작하면 아마 많은학생들이 포기할것이다 라고 예언을하셨고 저는 그래도 '에이.. 지금도 13명인데 나가봐야 또 한두명 나가겠..
([C언어] 14강) 함수의 생성과 반환값 이번에는 우리가 2강에서 배웠던 함수 만드는법을 사용해 함수를 만들어볼겁니다. 많이 쓰는 기능은 함수로 빼서 사용한다! 중요한 개념이니 꼭 기억해주세요! 우선 2강에서 배웠던 함수 만드는 법을 재정의해볼게요 자료형 함수이름(매개변수목록) { } 이렇게 만들수 있는데요, 이런 행위를 "함수를 정의한다"라고 하고 자료형도 무엇인지 알고 함수 이름을 짓는법도 아니까 이제 매개변수에 대해서 알려드리겠습니다. 우선 매개변수란 함수의 호출부에서 값을 넘겨줘서 호출되는 함수에게 이런값을 사용해! 라고 알려주는 겁니다. 자 그럼 매개변수로 숫자 두개를 입력하면 그 두개의 합을 출력해주는 함수를 만들어볼게요 프로그래밍에서 네이밍은 상당히 중요합니다. 저도 잘 못하는 부분이긴 하지만 꼭 신경써서 변수,함수 등의 이름을 네..
([C언어] 13강) sizeof연산자로 배열 길이 구하기 저번 시간에 하드코딩에 대해 배웠습니다. 이번시간에는 sizeof연산자에 대해 배울건데요 sizeof연산자란 함수처럼 사용하여 매개변수로 넘어온것의 메모리 크기를 알려주는 연산자입니다. 사용법은 sizeof(크기를 구할 값) 이렇게 할 수 있는데요! 자 그럼 sizeof(int); 이렇게 하면 무슨값이 나올까요? int는 4바이트 이므로 4가 나옵니다! 자 그럼 아래 코드의 실행 결과를 맞춰볼까요? #include int main() { int arr[30]; printf("%d",sizeof(arr)); } 이 코드의 수행결과는 어떻게 될까요? sizeof연산자의 매개변수로 길이 30의 int형 배열이 들어갔습니다 int의 메모리크기가 4바이트이고 4바이트가 30개 있으니 4 * 30 = 120이겠네요..
([C언어] 12강) define과 하드코딩 자 이번강좌에서는 프로그래머의 악! 절대 해서는 안될 행동인 하드코딩에 대해 설명하겠습니다. 하드코딩이란 우리가 작성하는 코드 자체에 값을 박제해버리는 코드를 말합니다 예를들자면 아래같은 코드죠 #include int main() { int arr[10]; for (int i = 0; i < 10; i++) { arr[i] = 0; } for (int i = 0; i < 10; i++) { printf("%d", arr[i]); } for (int i = 0; i < 10; i++) { arr[i] = 1; } for (int i = 0; i < 10; i++) { printf("%d", arr[i]); } } 어라 이건 맞는 코드 아닌가요? 지금까지 잭클님이 강좌 올리실때도 이렇게 하신것같은데.. 맞습..
([C언어] 11강) 2차원 배열 더보기 이번 강좌에서는 저번 강좌에 이어서 2차원 배열에 대해 공부해볼까 합니다. 우리는 그냥 배열을 배우면서 아래와 같은 그림을 보았습니다. 이런식으로 이루어진 배열을 1차원 배열 또는 배열 이라고 부릅니다 자 그럼 배열을 이용해 게임 맵을 만든다고 칩시다. 0은 지나갈수 있는길 1은 지나갈수 없는길 이런식으로 게임 맵을 만들어보겠습니다 자 이런식으로 게임 맵이 완성되었네요 그림으로 치면 이런식의 맵이 되겠네요! 아무튼! 이 맵에 대한 정보를 배열에 넣으려고 합니다 물론 이 숫자를 한줄로 정렬해서 00000000011111111101100000000110111111111000000000 이렇게 해도 표현 가능하겠지만 보시다 싶이 뭐가 더 보기 편한가요? 한줄보단 여러줄로 하는게 더 편하죠.. 그래서 존..
([C언어] 10강) 배열 이번 강좌에서는 배열에 대해 알아볼까 합니다. 배열은 변수의 업그레이드 버전인데요! 제가 처음 변수를 사용할때 변수는 주워온 상자다 라고 했습니다. 배열은 그 주워온 상자를 이어붙힌거라고 생각하시면 될것같네요 그림으로 따지면 이렇게 볼 수 있겠네요! 위의 그림과 같은 배열은 "5개짜리 배열이다"라고 말할수있겠네요 이 배열은 어떻게 만들까요? 자료형 배열이름[배열크기]; 이렇게 만들 수 있습니다! 변수처럼 사용할수 있지만 배열은 말했다싶이 변수의 묶음이므로 배열의 몇번째 요소인지를 정해주고 사용해야겠지만 말이죠! 자 그럼 아래 그림처럼 "5칸 배열"에 임의의 수가 할당되어있습니다. 그럼 여기서 질문을 하나 하겠습니다! 이 배열의 이름을 arr이라고 했을때 arr배열에서 98은 몇번째 요소인가요?? 너무쉽다..