C언어 기초 ws2_32.lib 추가
C언어 기초 ws2_32.lib 추가  윈도우에서 FormatMessage()와 WSAGetLastError()를 이용해서 에러 정보를 확인할 수 있는데요. WSAGetLastError()를 호출해서 에러를 의미하는 정수형이 리턴되는데 이때 이 숫자의 의미를 알기 위해서는 FormatMessage()를 사용해야 하는 것입니다. 윈도우에서 이 함수들을 사용하기 위해서는 ws2_32.lib를 프로젝트 라이브러리 파일에 추가해줘야 하는..
c언어 프로그램 main() 함수 인자 전달
c언어 프로그램 main() 함수 인자 전달  지금까지 C언어 프로그램을 공부하면서 main() 함수에는 인자를 전달하지 않은 기본 형태만 사용해왔는데 main() 함수도 인자를 전달할 수 있고 이를 확인하기 위해서는 프로그램을 실행하는 방법이 조금 차이가 있거든요. 그 과정을 정리해볼까 합니다. 먼저 다음과 같이 main() 함수에 인자를 전달할 수 있습니다.   ▲ 제한적이긴..
C언어 기초 함수 포인터
C언어 기초 함수 포인터  이번 글에서는 C언어 기초 중에서 함수 포인터에 대해서 기본 개념과 선언하는 방법을 알아보겠습니다. 우리가 정의하는 함수도 변수와 마찬가지로 메모리에 저장되는데요. 함수의 이름이 그 주소 값을 의미하는 것입니다. 즉, 이 주소 값을 저장하기 위한 별도의 함수 포인터를 선언할 수 있습니다.     함수 포인터도 선언하기 위해서는 먼저 포인터 형을 결정지어야 하는데 다음과 같은 ..
c언어 기초 프로그래밍 2차원 배열 이름이 가리키는 것들
c언어 기초 프로그래밍 2차원 배열 이름이 가리키는 것들  C언어의 2차원 배열 이름에 관한 이야기를 좀 해볼까 한다. 그전에 간단하게 1차원 배열 이름에 대해서 정리하고 넘어가 보자. 1차원 배열의 이름이 가리키는 것은 첫 번째 요소이며 이는 포인터와 같은 역할을 한다. 그리고 이 배열을 인자로 전달할 때 호출되는 함수에서는 포인터 변수로 받아서 배열에 접근해야 한다.    int aaa[3];  ▲&nbs..
C언어 독학 이중 포인터
C언어 독학 이중 포인터 포인터란 어떤 변수의 메모리상의 주소값을 저장하는 변수입니다. 그리고 포인터 자체도 변수이기 때문에 메모리에 자리를 잡게 되고 이 녀석도 자기의 주소값을 갖게 됩니다.   그렇기 때문에 포인터 변수를 대상으로 '&'연산이 가능하며 반환되는 이 녀석의 주소 값을받아서 저장할 수 있는 것을 이중 포이터라고 합니다. 즉, 포인터 변수를 가리키는 또 다른 포인터인데요. 선언하는..
C언어 독학 배열의 길이 없이 초기화하기
C언어 독학 배열의 길이 없이 초기화하기C언어에서 배열은 1차원과 다차원(2차원)이 있는데요. 이 배열들을 초기화하는 과정은 거의 비슷하다는 걸 지난 글에서 확인해봤습니다. '거의' 같다는 건 다른 점도 있다는 뜻이겠죠?^^ 몇 가지 차이점 중에서 이번 글에서 알아볼 배열의 길이를 알려주지 않고 초기화하는 방법이 조금 차이가 있습니다.  예를 들어 1차원 배열은 다음과 같이 길이를 명시하지 않고 초기화하면...int x []={1,..
C언어 다차원 배열 초기화
C언어 다차원 배열 초기화  2차원 배열은 행과 열의 형태로 생성되지만 메모리상에는 1차원과 같이 순서대로 할당되는 걸 지난 글에서 확인했었는데요. 이번에는 다차원 배열을 초기화하는 방법을 정리해볼까 합니다. 이 방법은 몇 가지가 있지만 기본 형식은 1차원과 비슷한데요. 먼저 1차원 배열을 잠깐 살펴보겠습니다.  int aaa[]={1, 2, 3 };  이렇게 초기화 리스트 안에 입력한 순서대로 데이..
C언어 다차원 배열 메모리 할당 형태는?
C언어 다차원 배열 메모리 할당 지난 글에서 다차원(2차원) 배열은 가로와 세로 형태로 배열이 생성되는 걸 확인했었는데요. 그렇다면 이 데이터들이 메모리에 저장될 때는 어떻게 할당 될까요? 컴퓨터의 메모리는 1차원 구조이기 때문에 2차원 배열의 형식으로 데이터를 저장하지는 못하고 순서대로 1차원 구조로 저장됩니다. 예를 들어 다음과 같은 2차원 배열이 있다고 가정해볼게요.   int arr[3][2]; 이 배열은 3행 2열의 ..
C언어 독학 다차원 배열
이번 글에서는 C언어의 다차원 배열의 기본 개념을 정리해볼까 합니다. 1차원 배열은 같은 자료형을 메모리상에 한 줄로 연속으로 나열하는 방식으로 데이터를 저장해서 관리를 용이하게 해주는 역할을 하는데요. 다차원 배열(일반적으로 2차원 배열)은 가로와 세로로 데이터를 저장하게 됩니다. 아파트 구조를 생각하면 이해하는데 도움이 좀 될 겁니다. 3층짜리에 각 층마다 2가구가 산다면 3행(층) 2열(가구)가 되겠죠? C언어에서 다..
C언어 프로그래밍 인자로 전달되는 값
C언어 프로그래밍 인자로 전달되는 값은 복사 값 C언어에서 함수를 호출할 때 어떤 데이터를 넘겨주면서 그것을 대입해서 함수를 실행하도록 하는 경우 전달되는 값을 인자라고 하는데요. 함수에는 같은 같은 자료형의 변수... 즉, 매개변수에 그 값을 저장했다가 이용하게 됩니다. 다음 예제에서 이 개념을 확인해보겠습니다. ▲ main() 함수에서 int형 변수 su1과 su2를 선언과 초기화 한 후 hap()이라는 ..
C언어 프로그램 포인터 배열
C언어 프로그램 포인터 배열 ■ 포인터도 변수이다. 데이터가 저장된 메모리의 주소를 저장하는 변수이기 때문에 포인터도 배열을 선언할 수 있으며 선언 방식은 다음과 같다.    int * aaa[10]; double * bbb[20]; 이렇듯 선언하는 방법은 일반 변수의 배열을 선언하는 방법과 같다. 이렇게 배열로 선언된 포인터를 이용하는 예제를 간단히 만들어본다. ▲ int형 변수 su1~su4까지 각각 값들을..
c언어 독학 포인터 변수의 초기화
c언어 독학 포인터 변수의 초기화 ■ 어떤 변수든 선언할 때 또는 나중에 값을 넣어서 초기화를 해줘야 하는데요. 다른 변수에 비해서 포인터 변수는 이 초기화에 특히 주의를 해야 합니다. 이 녀석을 이용하면 메모리의 특정 주소에 직접 접근할 수도 있고 그곳에 저장된 값을 변경할 수도 있기 때문인데요. 만약에 포인터 변수를 초기화하지 않고 값을 대입해버리면 어떤 결과가 나올까요? 예제에서 확인해볼게요. &..
c언어 독학 포인터 변수
■ c언어에서 포인터 변수도 어떤 값을 저장하기 위한 변수의 한 종류인데 여기에는 다른 변수의 메모리 주소값이 저장됩니다. 일단 이렇게 개념을 잡고 예제에서 int형 변수를 하나 선언하고 초기화 한 후 그 값이 저장된 메모리의 주소값을 불러와서 포인터 변수에 저장하고 출력하는 과정을 통해서 포인터 변수를 알아보겠습니다.   ▲ int x를 선언하고 10으로 초기화하고 있고, [int * a=&x;]로 int형 포..
c언어 프로그래밍 scanf 함수로 문자열 입력
c언어 프로그래밍 scanf 함수로 문자열 입력 ■ c언어에서 데이터를 입력받는 함수 중 하나가 scanf()인데요. 이 녀석을 이용해서 정수를 입력받을 때는 다음 예제와 같이 저장할 변수 앞에 "&"를 붙여줘야 합니다.  ▲ 정수를 입력받아서 'x' 변수에 저장하고 있는 과정인데 이렇게 x에 정수를 저장하기 위해서 "&"연산자를 붙이고 있습니다. 하지만 문자열을 입력받을 때는 "&" ..
c언어 배열 초기화 array initialization
c언어 배열 초기화 array initialization ■ 지난 글에서 c언의 배열의 개념과 선언 방법 등을 정리해봤는데요. 이번에는 배열을 선언과 동시에 초기화를 하면서 배열의 몇 가지 특징을 정리해보겠습니다. 먼저 선언과 동시에 초기화하는 방법은 다음과 같습니다.   int aaa[3]={1, 2, 3}; 이런 형식인데요. [] 안에 3은 배열의 길이를 의미하고 1, 2, 3이 순서대로 저장됩니다..
c언어 배열 선언 array
c언어 배열 선언 array ■ 배열이란 동일한 자료형의 변수를 여러 개 모아놓은 것인데요. 배열을 선언할 때는 이름, 자료형, 길이 정보가 필요하며 형식은 다음과 같습니다.   int aaa [3] ◀ 자료형 배열이름 [배열길이] 즉, 배열을 이루는 요소들의 자료형과 배열의 이름 그리고 몇 개의 변수를 모아 놓을 것인지 길이를 지정해주면 됩니다. 위 형식처럼 배열을 선언하면 in..