프로그래밍 (21) 썸네일형 리스트형 다차원 배열 이번 시간에는 다차원 배열에 대해 정리하도록 하겠다. 다차원 배열이라 함은 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를.. 포인터 연산 포인터를 대상으로 메모리의 접근을 위한 * 연산 외에도 증감 연산도 가능하다. 이번에는 연산의 결과를 눈여겨 보자. 포인터 변수에는 주소값을 담고있다. 즉 , 자료형의 크기에 따라 연산이 진행된다. 예제를 살펴보자. 코드를 분석하고 결과값을 예상해보자 직접 짜보고 눈으로 확인하길 바란다 . 결과값은 각자....ㅎㅎ 결론만 얘기하겠다. 포인터를 대상으로 하는 증감 연산의 결과는 다음과 같다. 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 우리가 입력.. static 변수 (static variable) 이번에 설명할 변수는 스테틱 변수다.static은 전역변수와 지역변수 모두 선언을 추가할 수 있다. 이번에는 지역변수에 추가하는 상황을 설명할 것 이다! 우리가 아는 지역변수는 접근의 범위가 선언된 함수 내에서만으로 제한되어져 있다. 지역변수에 static 선언을 하게되면 지역변수와 전역변수의 특성을 둘다 가질수 있다. static 지역변수의 특성 - 선언된 함수 내에서만 접근이 가능하다 ( 지역변수 특성 )- 한번마나 초기화되고 프로그램 종료 시까지 메모리 공간에 존재 ( 전역변수 특성 ) 즉 , 접근의 범위가 전역변수보다 좁으나 전역변수의 risk를 제거하는 특성을 지닌다 , 훨씬 안정적이다. 다음 예제를 통해 전역변수의 특성을 알아보도록 하자 4행에서 simplefunc이라는 함수를 선언하고 정의한.. 전역 변수 (Global Variable) 이번에 설명할 변수는 '전역변수'이다앞서 설명한 변수인 지역변수와는 매우 비교되는 함수다! 우리가 여태껏 사용해왔던 변수들은 호출된 시점으로부터 메모리 공간에 할당되서 함수가 종료되면 메모리 공간에서 소멸되는 지역변수 형태의 변수들이다. 이번 전역변수는 프로그램이 처음 실행되는 순간 메모리 공간에 할당되어 프로그램이 종료될 떄까지 메모리 공간에 남아있는 변수이다! 전역변수는 이름 그대로 언제 어디서든 접근이 가능한 변수로 지역변수와 달리 중괄호 내에 선언되지 않는다. 다음 간단한 예제를 통해 전역변수를 알아보자! 5행에서 num이라는 전역변수를 초기화하지 않고 선언만 하였다 , ( 보기와 같이 전역변수는 함수 몸체 내에 선언되지 않는다. 9헹에서는 함수 내부에 선언한 변수도 아닌 num을 출력을 시도한다.. 이전 1 2 3 다음