본문 바로가기

Programming

(99)
다차원 배열 이번 시간에는 다차원 배열에 대해 정리하도록 하겠다. 다차원 배열이라 함은 2차원 이상의 배열들을 의미한다. 우리가 앞서 공부했던 1차원 배열의 연장선에 놓여있다. 앞서 공부했던 1차원 배열을 논리적으로 1차원의 형태를 띤다. 1차원 배열은 선 구조의 배열이고 2차원 배열은 평면 구조의 배열 , 3차원 배열은 직육면체 구조의 배열이다. 참고로 1,2,3차원 배열의 선언법은 다음과 같다. int onedimarr[5]; //길이가 5인 1차원 int형 배열 int twodimarr[5][5]; //가로,세로의 길이가 각각 5인 2차원 int형 배열 int thrdimarr[5][5][5]; //가로,세로,높이의 길이가 각각 5인 3차원 int형 배열 이들 중 실제로 많이 사용되는 것은 1,2차원 배열이다...
Call By Value & Call By Reference 이번에 정리할 내용은 CBV , CBR이다. 정말 중요한 내용이니 열심히 공부하자 Call By Value와 Call By Reference는 둘 다 함수 호출 방식을 의미한다. 다만 함수의 인자(매개변수)로 전달되는 대상에 차이가 있다. Call By Value : 함수 호출시 단순히 값(Value)만 전달하는 형태의 함수호출 Call By Reference : 함수 호출시 메모리 접근에 사용되는 주소 값을 전달하는 형태의 함수호출 여태 우리가 정의해왔던 대부분의 함수들은 값을 전달하는 형태로 Call By Value였다. 이번엔 Call By Reference형태의 함수호출을 이용한 예제를 살펴보자! 5행에서 선언한 함수를 주목하자 , 매개변수와 몸체부를 보자 전달 인자값으로 *ptr1과 *ptr2를..
포인터 배열 우리는 여태껏 기본자료형의 변수를 요소로 지니는 배열들만 사용해왔다. 하지만 포인터 변수 또한 변수이니 이를 대상으로도 배열선언이 가능하다. 그게 우리가 지금 공부할 포인터 배열 이고 시작하자! 포인터 배열 : 포인터 변수로 이루어진 , 그래서 주소값의 저장이 가능한 배열포인터 배열의 선언방식ex) int *arr1[5] // 길이가 5인 int형 포인터배열 arr1 double *arr2[30] // 길이가 30인 double형 포인터배열 arr2 이와같이 우리가 평소 포인터를 선언하는 방법과 배열을 선언하는 방법을 짬뽕한 형태다! 선언에 대해서는 정리할것이 많지않으니 바로 예제로 들어가보겠다. 6행에서 int형 변수 3개를 선언과 동시에 초기화7행에서 길이3의 int형 포인터 배열을 선언하고 각 배열..
포인터 연산 포인터를 대상으로 메모리의 접근을 위한 * 연산 외에도 증감 연산도 가능하다. 이번에는 연산의 결과를 눈여겨 보자. 포인터 변수에는 주소값을 담고있다. 즉 , 자료형의 크기에 따라 연산이 진행된다. 예제를 살펴보자. 코드를 분석하고 결과값을 예상해보자 직접 짜보고 눈으로 확인하길 바란다 . 결과값은 각자....ㅎㅎ 결론만 얘기하겠다. 포인터를 대상으로 하는 증감 연산의 결과는 다음과 같다. int형 포인터 대상으로 n 증가 n * sizeof(int)의 크기만큼 증가double형 포인터 대상으로 n 증가 n* sizeof(double)의 크기만큼 증가 감소연산 또한 똑같은 값으로 감소한다. 위 내용을 일반화 시켜보면 " TYPE형 포인터를 대상으로 n의 크기만큼 값을 증가 및 감소 시 , n x size..
포인터와 배열의 관계 이번 공부를 통해 알리고자 하는 내용은 배열 또한 포인터 라는 사실이다. 배열의 이름은 포인터다. 단 , 그 값을 바꿀수 없는 '상수 형태의 포인터'다. 다음 예제를 살펴보고 진행하도록 하자. (참고로 %p 는 주소값의 출력에 사용되는 서식문자이다.) 정수형 길이3의 배열을 선언과 동시에 초기화 해주었다. 그리고 배열의 각 요소의 주소값들을 출력하고있다. 결과값을 보자! 결과값을 살펴보면 16진수 형태로 출력됨을 알수있으며 동시에 각 요소들의 차는 4byte임을 알 수 있다! (우리가 선언한 배열은 int형 , int형 자료형은 하나당 4byte의 크기를 갖는다!) 모든 배열의 요소는 메모리 공간에 나란히 할당된다! 라는 점을 몸소 확인하였다. 그리고 배열이름을 출력하는 부분에서 배열의 첫번째 요소 값을..
포인터 정리 이번에는 C언어에서 매우 중요한 위치를 가지고있는 포인터 개념에 대해 공부해보자! 정리를 시작하기에 앞서 , 포인터는 여러모로 정말 중요한 개념이니 꼭 꼭 꼭 꼭 확실히 잡자! 포인터는 C언어가 Low Level의 특성을 지니는 가장큰 이유다. 왜냐하면 포인터를 이용하면 메모리의 주소값을 통해 메모리에 직접 접근이 가능하기 때문이다. 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 A B C 위 블록에 칸마다 적어놓은것은 메모리의 주소값이다. 그림에서 보는것과 같이 , 메모리 공간은 1바이트를 단위로 하나의 주소값이 할당되며 , 주소 값도 1씩 증가한다. char형 변수 A , B와 int형 변수 C를 선언했다고 가정해보자. char형 변수 A는 0x0001번지에 할당이 되어있..
char형 배열 , 문자열 이번에는 배열의 한 종류인 문자열에 대해 공부하자 우리는 한 문자를 입,출력 하기위해 char라는 자료형을 사용한다. 배열을 선언하는데 자료형은 char형으로 선언하면 어떻게 될까? 배열은 각각의 요소들을 나란히 정렬시키고 그 요소들이 문자들이라면 '문자열'을 만들수 있지 않을까? char형 배열을 이용하면 문자열의 저장뿐만 아니라 문자열의 변경도 가능해진다. 이전에 언급한것과 같이 C언어 에서는 문자열을 " 큰 따옴표를 이용하여 표현한다. 다음의 예시를 보자 char[14] = "Good morning!"; 이러한 char형 배열 선언을 통해 메모리 공간에는 char변수14개가 나란히 할당되고 , 이 배열에는 이러한 형태로 문자열이 저장된다. G o o d m o r n i n g ! \0 우리가 입력..
1차원 배열 배열(Array)란 무엇인지 알아보자! 왠지 이름만 들어도 다수의 데이터를 저장하고 처리하는데 용이할 것 같은 느낌적인 느낌이 든다. 예를 들어보자! 한 아파트에 거주하는 인원을 저장 및 갱신하는 프로그램을 만든다고 가정해보자. 이 아파트는 15개의 층이있고 각 층에는 네 가구가 입주해 있다. 그러면 우리는 각각의 데이터를 대입할 변수가 총 15 x 4 = 60개가 필요하다.... 그렇다... 그러면 이런식으로 짜야할듯 싶다.. int floor01 , floor02 , floor03 , floor04 ....floor60 총 60개를 선언해줘야 한다. 이렇게는 안할랜다... 우리는 귀찮음을 덜기 위해 배열을 이용한다 배열을 선언하기 위해서는 배열이름 , 배열의 길이 , 자료형 이렇게 3가지의 요소만 있..