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언어 독학 const
c언어 독학 const 이번 글에서는 C언어 const를 포인터 변수에 선언하는 개념을 정리해볼까 합니다. const는 어떤 값이 변경되지 못하도록 상수로 선언하는 건데요. 포인터 변수에도 똑같이 적용할 수 있습니다. 포인터 변수를 이용하면 변수에 저장된 값도 변경할 수 있고, 포인터 변수에 저장된 변수의 주소 값도 변경할 수 있는데 이런 것들을 못하게 막아버리는 것입니다. 먼저 포인터에 저장된 변수의 주소 값을 ..
C언어 프로그램 함수 호출 방식
C언어 프로그램 함수 호출 방식 C언어에서 어떤 기능을 실행하기 위해서 함수를 호출할 때 단순하게 이름으로 호출해서 그 안에 포함된 내용만 실행하도록 하는 경우도 있지만 어떤 값들을 전달하면서 호출하고 전달된 값을 이용해서 프로그램을 실행하게 하는 경우도 있는데요. 이렇게 값을 전달하면서 호출하는 방식은 두 가지가 있습니다. 첫 번째는 데이터를 전달하는 방식이구요.(Call-by-vlaue) 두 번째는 ..
C언어 독학 배열을 인자로 전달하기
C언어 독학 배열을 인자로 전달하기 배열이란 같은 자료형을 여러 개 모아 놓은 데이터의 형식인데요. 이 데이터를 함수에 인자로 전달할 수 있을까요? 지금까지 공부하면서 정리했던 대로 배열의 이름은 포인터 변수와 와 똑같은 역할을 하기 때문에 배열의 이름을 인자로 전달하면 그 배열의 첫 번째 요소의 주소 값이 전달됩니다. 하지만 함수에서는 매개변수로 배열을 사용할 수 없기 때문에 난관에 부딪치게 되는데요. 이때 매개변수에 포인터 변수는 사용할 수가..
C언어 프로그래밍 인자로 전달되는 값
C언어 프로그래밍 인자로 전달되는 값은 복사 값 C언어에서 함수를 호출할 때 어떤 데이터를 넘겨주면서 그것을 대입해서 함수를 실행하도록 하는 경우 전달되는 값을 인자라고 하는데요. 함수에는 같은 같은 자료형의 변수... 즉, 매개변수에 그 값을 저장했다가 이용하게 됩니다. 다음 예제에서 이 개념을 확인해보겠습니다. ▲ main() 함수에서 int형 변수 su1과 su2를 선언과 초기화 한 후 hap()이라는 ..
C언어 프로그램 포인터 배열
C언어 프로그램 포인터 배열 ■ 포인터도 변수이다. 데이터가 저장된 메모리의 주소를 저장하는 변수이기 때문에 포인터도 배열을 선언할 수 있으며 선언 방식은 다음과 같다.    int * aaa[10]; double * bbb[20]; 이렇듯 선언하는 방법은 일반 변수의 배열을 선언하는 방법과 같다. 이렇게 배열로 선언된 포인터를 이용하는 예제를 간단히 만들어본다. ▲ int형 변수 su1~su4까지 각각 값들을..
C언어 프로그램 문자열과 포인터
C언어 프로그램 문자열과 포인터 ■ 문자열을 선언하는 일반적인 방식은 다음과 같이 배열에 char 변수를 저장하는 방법일 것이다.  char ch[]="Hello!"; 이때 배열의 길이는 자동으로 초기화되기 때문에 신경 쓰지 않아도 되고,이는 변수들을 모아놓은 배열이다. 그렇기 때문에 그 변수에 저장된 값들을 변경할 수가 있는데 간단하게 확인해본다. ▲ 먼저 ch 배열로 문자열을 저장한 후 출력하고 있으며 문자열의 여섯 번째..
C언어 독학 포인터 연산
C언어 독학 포인터 연산 포인터는 변수의 메모리 주소를 저장하는 것입니다. 그렇다면 이 포인터 변수를 증가 또는 감소하면 어떻게 될까요? 포인터 변수에 저장된 건 메모리 주소이기 때문에 해당 자료형의 크기만큼 증가 또는 감소하게 되는데요. 예를들어 int형 포인터라면 1을 더하면 4byte 만큼 값이 변경 되는 것입니다. 예제에서 확인해볼게요.   ▲ 요소가 세 개인 int형 배열 a를 선언하고 각각의..
c언어 프로그래밍 1차원 배열 이름을 대상으로 한 * 연산
c언어 프로그래밍 1차원 배열 이름을 대상으로 한 * 연산 ■ 지난 글에서 배열의 이름은 포인터 형이라는 걸 확인해봤었는데요. 둘이 같다면 배열 이름을 대상으로도 *연산을 할 수도 있고 반대로 포인터를 배열의 이름처럼 사용해서 그 요소에 접근할 수 있다는 의미인데요. 그 과정들을 예제로 살펴보겠습니다.   먼저 배열 이름을 대상으로 *연산을 하는 과정입니다.  ▲ int형 배열 a와 double형 배..
C언어 독학 배열 이름은 포인터이다
C언어 독학 배열 이름은 포인터이다 ■ 배열은 같은 자료형의 데이터를 메모리에 연속으로 저장하는 것이고 포인터는 특정 변수의 메모리상의 주솟값을 저장하는 것인데요. 글의 제목처럼 배열 이름이 포인터라면 배열도 값이 저장된 메모리의 주솟값을 저장하고 있다는 의미겠죠? 다음 예제를 통해서 그 결과를 확인해보겠습니다. ▲ a [] 배열에 int형 자료형 세 개를 저장하고 있는데요. 서식 문사 "%p"를 이용해서 각 요소들의 값을 출력해보겠..
c언어 독학 포인터 변수의 초기화
c언어 독학 포인터 변수의 초기화 ■ 어떤 변수든 선언할 때 또는 나중에 값을 넣어서 초기화를 해줘야 하는데요. 다른 변수에 비해서 포인터 변수는 이 초기화에 특히 주의를 해야 합니다. 이 녀석을 이용하면 메모리의 특정 주소에 직접 접근할 수도 있고 그곳에 저장된 값을 변경할 수도 있기 때문인데요. 만약에 포인터 변수를 초기화하지 않고 값을 대입해버리면 어떤 결과가 나올까요? 예제에서 확인해볼게요. &..
c언어 프로그래밍 포인터 변수 선언과 &, * 연산자의 역할
■ C언어에서 변수를 선언하면 메모리의 어느 한 곳에 위치하게 되는데 그곳의 주소를 가져와서 저장할 수 있는 것이 포인터 변수입니다. 이 포인터 변수를 이용하면 메모리에 저장된 변수의 값에 접근할 수도 있고 변경할 수도 있습니다. 이때 사용되는 연산자들이 있는데 변수의 값이 저장된 메모리 주소를 반환하는 연산자가 "&"이고, 그 변수의 주소에 직접 접근할 수 역할을 하는 게 "*" 연산자..
c언어 독학 포인터 변수
■ c언어에서 포인터 변수도 어떤 값을 저장하기 위한 변수의 한 종류인데 여기에는 다른 변수의 메모리 주소값이 저장됩니다. 일단 이렇게 개념을 잡고 예제에서 int형 변수를 하나 선언하고 초기화 한 후 그 값이 저장된 메모리의 주소값을 불러와서 포인터 변수에 저장하고 출력하는 과정을 통해서 포인터 변수를 알아보겠습니다.   ▲ int x를 선언하고 10으로 초기화하고 있고, [int * a=&x;]로 int형 포..
c언어 프로그래밍 scanf 함수로 문자열 입력
c언어 프로그래밍 scanf 함수로 문자열 입력 ■ c언어에서 데이터를 입력받는 함수 중 하나가 scanf()인데요. 이 녀석을 이용해서 정수를 입력받을 때는 다음 예제와 같이 저장할 변수 앞에 "&"를 붙여줘야 합니다.  ▲ 정수를 입력받아서 'x' 변수에 저장하고 있는 과정인데 이렇게 x에 정수를 저장하기 위해서 "&"연산자를 붙이고 있습니다. 하지만 문자열을 입력받을 때는 "&" ..