c언어 독학 EOF
c언어 독학 EOF  취미생활로 c언어 독학을 하고 있는데 그동안 문자열을 입력받고 출력할 때는 scanf()와 printf() 함수를 이용했습니다. 하지만 이 녀석들은 메모리의 공간도 많이 차지하고 연산의 양이 많은 단점이 있어서 하나의 문자만 입력받고 출력할 때는 putchar, fputc, getchar, fgetc 함수를 이용하는 게 좋기 때문에 지난 글에서 이 함수들의 쓰임새를 대충 살펴봤습니다. 그런데..
C언어 독학 포인터 배열
C언어 독학 포인터 배열 ■ 포인터도 변수의 메모리 주소를 저장하는 일 종의 변수이다. 그렇기 때문에 이 또한 배열로 저장할 수 있는데 일반 변수의 배열과 크게 다르지 않기 때문에 간단한 예제를 통해서 그 내용을 알아보고 이중 포인터가 필요한 이유에 대해서 정리해본다. 먼저 선언하는 형식은 다음과 같다. int * aaa[10]; ▲ 길이가 10인 int형 포인터 변수이다. aaa가 가리키는 것은 첫 번째 ..
C언어 독학 배열의 길이 없이 초기화하기
C언어 독학 배열의 길이 없이 초기화하기C언어에서 배열은 1차원과 다차원(2차원)이 있는데요. 이 배열들을 초기화하는 과정은 거의 비슷하다는 걸 지난 글에서 확인해봤습니다. '거의' 같다는 건 다른 점도 있다는 뜻이겠죠?^^ 몇 가지 차이점 중에서 이번 글에서 알아볼 배열의 길이를 알려주지 않고 초기화하는 방법이 조금 차이가 있습니다.  예를 들어 1차원 배열은 다음과 같이 길이를 명시하지 않고 초기화하면...int x []={1,..
C언어 독학 다차원 배열
이번 글에서는 C언어의 다차원 배열의 기본 개념을 정리해볼까 합니다. 1차원 배열은 같은 자료형을 메모리상에 한 줄로 연속으로 나열하는 방식으로 데이터를 저장해서 관리를 용이하게 해주는 역할을 하는데요. 다차원 배열(일반적으로 2차원 배열)은 가로와 세로로 데이터를 저장하게 됩니다. 아파트 구조를 생각하면 이해하는데 도움이 좀 될 겁니다. 3층짜리에 각 층마다 2가구가 산다면 3행(층) 2열(가구)가 되겠죠? C언어에서 다..
c언어 독학 const
c언어 독학 const 이번 글에서는 C언어 const를 포인터 변수에 선언하는 개념을 정리해볼까 합니다. const는 어떤 값이 변경되지 못하도록 상수로 선언하는 건데요. 포인터 변수에도 똑같이 적용할 수 있습니다. 포인터 변수를 이용하면 변수에 저장된 값도 변경할 수 있고, 포인터 변수에 저장된 변수의 주소 값도 변경할 수 있는데 이런 것들을 못하게 막아버리는 것입니다. 먼저 포인터에 저장된 변수의 주소 값을 ..
C언어 독학 배열을 인자로 전달하기
C언어 독학 배열을 인자로 전달하기 배열이란 같은 자료형을 여러 개 모아 놓은 데이터의 형식인데요. 이 데이터를 함수에 인자로 전달할 수 있을까요? 지금까지 공부하면서 정리했던 대로 배열의 이름은 포인터 변수와 와 똑같은 역할을 하기 때문에 배열의 이름을 인자로 전달하면 그 배열의 첫 번째 요소의 주소 값이 전달됩니다. 하지만 함수에서는 매개변수로 배열을 사용할 수 없기 때문에 난관에 부딪치게 되는데요. 이때 매개변수에 포인터 변수는 사용할 수가..
C언어 독학 포인터 연산
C언어 독학 포인터 연산 포인터는 변수의 메모리 주소를 저장하는 것입니다. 그렇다면 이 포인터 변수를 증가 또는 감소하면 어떻게 될까요? 포인터 변수에 저장된 건 메모리 주소이기 때문에 해당 자료형의 크기만큼 증가 또는 감소하게 되는데요. 예를들어 int형 포인터라면 1을 더하면 4byte 만큼 값이 변경 되는 것입니다. 예제에서 확인해볼게요.   ▲ 요소가 세 개인 int형 배열 a를 선언하고 각각의..
C언어 독학 배열 이름은 포인터이다
C언어 독학 배열 이름은 포인터이다 ■ 배열은 같은 자료형의 데이터를 메모리에 연속으로 저장하는 것이고 포인터는 특정 변수의 메모리상의 주솟값을 저장하는 것인데요. 글의 제목처럼 배열 이름이 포인터라면 배열도 값이 저장된 메모리의 주솟값을 저장하고 있다는 의미겠죠? 다음 예제를 통해서 그 결과를 확인해보겠습니다. ▲ a [] 배열에 int형 자료형 세 개를 저장하고 있는데요. 서식 문사 "%p"를 이용해서 각 요소들의 값을 출력해보겠..
c언어 독학 포인터 변수의 초기화
c언어 독학 포인터 변수의 초기화 ■ 어떤 변수든 선언할 때 또는 나중에 값을 넣어서 초기화를 해줘야 하는데요. 다른 변수에 비해서 포인터 변수는 이 초기화에 특히 주의를 해야 합니다. 이 녀석을 이용하면 메모리의 특정 주소에 직접 접근할 수도 있고 그곳에 저장된 값을 변경할 수도 있기 때문인데요. 만약에 포인터 변수를 초기화하지 않고 값을 대입해버리면 어떤 결과가 나올까요? 예제에서 확인해볼게요. &..
c언어 프로그래밍 포인터 변수 선언과 &, * 연산자의 역할
■ C언어에서 변수를 선언하면 메모리의 어느 한 곳에 위치하게 되는데 그곳의 주소를 가져와서 저장할 수 있는 것이 포인터 변수입니다. 이 포인터 변수를 이용하면 메모리에 저장된 변수의 값에 접근할 수도 있고 변경할 수도 있습니다. 이때 사용되는 연산자들이 있는데 변수의 값이 저장된 메모리 주소를 반환하는 연산자가 "&"이고, 그 변수의 주소에 직접 접근할 수 역할을 하는 게 "*" 연산자..
c언어 독학 포인터 변수
■ c언어에서 포인터 변수도 어떤 값을 저장하기 위한 변수의 한 종류인데 여기에는 다른 변수의 메모리 주소값이 저장됩니다. 일단 이렇게 개념을 잡고 예제에서 int형 변수를 하나 선언하고 초기화 한 후 그 값이 저장된 메모리의 주소값을 불러와서 포인터 변수에 저장하고 출력하는 과정을 통해서 포인터 변수를 알아보겠습니다.   ▲ int x를 선언하고 10으로 초기화하고 있고, [int * a=&x;]로 int형 포..
C언어 독학 배열로 문자열 표현하기
C언어 독학 배열로 문자열 표현하기   ■ C언어에서 문자열을 표현할 때는 큰따옴표("")를 이용하는데요. char 배열을 이용해서 문자열을 저장하고 변경할 수 있는데 간단한 코딩을 해보면서 그 과정을 확인해보겠습니다. 먼저 char 배열에 문자열을 저장하겠습니다. ▲ char 배열 str에 길이를 지정하지 않고 문자열을 입력하고 있습니다. 이렇게 길이를 지정하지 않으면 컴파일러가 문자열을 체크한 후 그 길이를 자동으..
C언어 독학 함수 만들기 function return
C언어 독학 함수 만들기 function return ■ 지난 글에서 C언어 함수의 개념을 정리해봤는데요. 함수는 '전달 인자'와 '반환 값'의 유무에 따라서 네 가지로 구분할 수 있습니다. 이번 글에서는 첫 번째로 전달인자와 반환값이 모두 있는 일반적인 함수를 만들어보겠습니다. 예제는 전달된 인자를 더해서 그 값을 반환하는 형태의 함수인데요. 다음과 같은 특징으로 만들겠습니다. 전달되는 인자는 int 형으로 두 개이며..
c언어 독학 do~while
c언어 독학 do~while ■ 지난 글에서 while문에 대해서 정리해봤는데요. while문은 앞쪽에서 조건문을 검사해서 참이면 실행하고 거짓이면 실행하지 않는 형식인데요. 이번 글에서 알아볼 do~while문은 조건을 뒤쪽에서 검사한다는 차이점이 있습니다. 그렇기 때문에 최초 한 번은 무조건 실행하게 되며 형식은 다음과 같습니다.  do{ 실행할 코드; }while(조건문);  예제를 만들어서 확인해보겠습..
c언어 독학 scanf() 함수
c언어 독학 scanf() 함수 ■ c언어에서 출력을 위한 함수로 printf()가 있으며 지난 글에서 개념 정리를 해봤었는데요. 이번 글에서는 입력을 담당하는 scacnf() 함수에 대해서 알아보도록 하겠습니다. 프로그램은 사용자로 하여금 어떤 데이터를 입력받는 경우가 많은데 크게 정수와 실수, 그리고 문자열 입력이 가장 대표적이겠죠? 아직은 개념 정리 단계이므로 정수와 문자열만 간단하게 입력받아서 저장했다가 출력하는 ..
c언어 독학 변수 선언
c언어 독학 변수 선언 ■ C언어에서 변수는 데이터를 저장하는 메모리상의 공간을 의미하는데 변수를 선언함으로써 메모리에 공간이 할당된다. 그 공간에는 데이터를 저장할 수도 있고, 저장된 값을 참조할 수도 있는데 이런 변수를 선언할 때 주의해야 할 사항이 몇 가지 있는데 간단하게 정리해본다.   먼저 변수의 이름을 정할 때는 변수가 하는 기능과 어울리는 이름을 지어주는 게 좋다. 예를 들어 국..