목록전체 글 (149)
Taking baby-developer steps
특정한 위치의 원소를 삭제하는 함수 Q. 특정한 위치의 원소를 삭제하는 함수는 어떻게 만들 수 있을까? #include #define INF 10000 int arr[INF]; // 메모리 공간이 거의 무한에 가깝게 존재한다고 가정 int count = 0; void addBack(int data){ arr[count] = data; count++ ; } void addFirst(int data){ for(int i = count; i>=1; i--){ arr[i] = arr[i-1] ; } arr[0] = data ; count++; } void show(){ for(int i = 0; i< count ; i++){ printf("%d\n", arr[i]); } } 지난 번 포스팅에서 위와 같이 배열기..
배열 기반의 리스트를 만들고, 특정한 data를 배열의 뒷부분에 담는 함수 addBack(), 특정한 data를 배열의 가장 앞 부분에 담는 함수 addfirst(), 배열에 담겨있는 모든 원소를 하나씩 출력하는 함수 show() 를 만들어 봤다. #include #define INF 10000 int arr[INF]; int count = 0; void addBack(int data){ arr[count] = data; count++ ; } void addfirst(int data){ for( int i = count; i >= 1; i--){ arr[i] = arr[i-1]; } arr[0] = data; count++ ; } void show(){ for (int i = 0 ; i 1 2 3 4 5..
문자열 전통적인 C언어에서 문자열을 다루는 방법과 다양한 문자열 관련 함수를 익히고 활용한다. 문자열의 개념 문자열이란 말 그대로 문자들의 배열이다. 문자열은 컴퓨터 메모리 구조상에서 마지막에 널(NULL)값을 포함한다. 컴퓨터에서 널(NULL)이란, '존재하지 않는다'라는 뜻으로, 즉 어떠한 값도 의미있는 값이 들어가 있지 않음을 의미한다. 이 널(NULL)값은 '\0'이라는 문자 형태로도 표현한다. 0 1 2 3 4 5 H E L L O \0 위의 문자열은 총 5개의 문자와 NULL값으로 이루어져 있다. 널값은 문자열의 끝을 알리는 목적으로 사용된다. printf() 함수를 실행하면 컴퓨터는 내부적으로 NULL을 만날 때 까지 출력한다. 이처럼 NULL값은 문자를 처리 할 때 중요한 요소로 사용된다...
문자 C언어에서 문자를 처리하는 방법에 대해 학습하고, 문자와 버퍼의 관계를 이해하고 활용하는 것을 목표로 한다. 아스키 코드 C프로그램의 문자는 아스키 코드(Ascii Code)를 따른다. 아스키 코드는 0~127중의 1바이트로 구성되며, 주요 문자를 출력하도록 해준다. cf) 한글 등과 같은 유니코드는 조금 더 많은 바이트로 구성된다. 다음과 같은 주요 문자는 외워두는게 좋다. 0~9 48~57 A~Z 65~ a~z 97~ 아스키 코드로 인해, 캐릭터형 자체에 숫자를 넣어서 처리할 수 있다. 문자 입출력에서 형식 지정자로 %c를 사용한다. (C언어에서의 문자가 아스키 코드를 따르므로 char형은 각각 '숫자'에 매치가 된다. 이는 컴퓨터가 사실 char형을 '숫자'로써 처리한다는 것이다.) #incl..

포인터 향후 고급 프로그래머가 되기 위해선, C언어의 포인터를 이해하고, 더 하위 레벨의 언어라고 할 수 있는 어셈블리어 또한 접하게 될것이다. 일반적인 웹 및 앱 개발을 할 땐 몰라도 문제는 없으나, 코어 모듈 개발을 할 필요가 있다면 반드시 잘 알고 넘어가야 할 부분이다. 포인터의 개념 지금까지 변수는 그 자체로 자신의 자료형에 맞는 값을 저장했다. (ex> int, double) 포인터(Pointer) 변수는 특이한 변수로, 메모리 주소를 저장한다.(메모리에 주소 값 자체를 담는다.) 또, 단순히 주소 값만 저장하는게 아니라, 어떤 자료형의 주소 값인지를 함께 저장한다. 어떤 int형 변수를 만들었다고 하면, 이 int형 변수는 컴퓨터 메모리 공간 어딘가에 저장이 된다. 이 때, 그러한 변수의 위치..
배열 배열이라는, 일종의 자료구조에 어떻게 접근해서 어떻게 사용할 수 있는지. 선언 및 접근 방법에 대해 학습한다. 우선 배열은, 일일이 변수를 선언해서 처리하기 힘든 경우에 사용한다. 동일한 자료형을 여러개 담기 위함이다. 배열을 사용하면 동일한 성격의 데이터를 다수 표현할 수 있다. 배열의 선언과 초기화 배열의 선언은 다음과 같이 할 수 있다. 자료형 배열명[배열의 크기] = (초기화 값); //초기화 값은 없을 수도 있다. 이 때 초기화 값에 {0,} 를 넣게 되면, 선언한 배열의 전체 원소를 0으로 초기화 할 수 있다. 배열은 인덱스를 통해 개별적인 값에 접근할수 있다. INT_MIN INT_MIN은 최댓값을 구하기 위해 자주 사용 되는 기능으로, 헤더파일에 정의가 되어 있는 것으로, int형 범..

함수 함수는 입력을 받아 처리한 뒤에 출력하는 구조를 가진다. 함수는 특정한 기능에 대한 소스코드가 반복되는 것을 줄이도록 해준다. 함수의 형태는 다음과 같다. 반환자료형 함수명(매개변수){ //수행될 명령어 return 반환할 값; } 위에서 반환 자료형에는 함수의 처리결과를 어떤 자료형으로 반환할지를 결정한다. +애초에 다양한 프로그래밍 기법들은 프로그래밍을 얼마나 효과적으로, 생산성이 높게 할 수 있는지에 초점을 맞추고 있으므로, 함수 또한 이런 목적(불필요한 소스코드의 반복 제거)으로 사용 된다. 함수에서 매개변수와 반환할 값은 경우에 따라서 없을 수 있다. 매개변수 및 반환할 값이 없을 때의 자료형은 void이다. +주로 void형으로 정의된 함수 여러개들이 묶여있는 것이 라이브러리이다. 함수를..
반복문 특정 조건이 부합 할 때 특정한 명령어가 반복되게 할 수 있다. For문 For문 내부의 조건에 부합하면(조건이 참이면) 계속해서 특정한 구문을 실행한다. 반복문을 탈출하고자 할 땐 해당 위치에 break 구문을 삽입한다. For문의 구조는 다음과 같다. for (초기화; 조건; 반복 끝 명령어){ //반복적으로 실행 할 부분 } 초기화는 있을 수도, 없을 수도 있다. 일단 조건을 만족하면, 특정한 부분(반복적으로 실행할 부분)을 실행한 후, 특정 부분이 끝나면 다시 돌아와, 반복 끝 명령어를 수행하게 된다. 그 다음 다시 조건을 만족하는지 확인해서 만족하면 반복해서 실행을 계속 한다. +사실 전통적인 C언어에서는 for문 안에서 초기화를 시키는게 금지(for문 전에 미리 선언 및 초기화를 해야함..
조건문 조건문을 이용해 프로그램의 흐름을 결정할 수 있다. 이번엔 if문과 switch문을 통해 각각의 문법을 어떻게 사용할 수 있는지에 대해 알아본다. IF문 if문 내부의 조건을 검사해 츠로그램의 진행 경로를 결정한다. if문은 조건의 개수가 많지 않을 때 사용하는 것이 유리하다. 총 3가지 예약된 문장들을 사용해서 if문을 만들 수 있는데, 다음과 같다. if (조건 1){ // 조건 1에 부합 할때 } else if (조건 2){ // 조건 1에 부합하지 않지만 조건 2에 부합 할때 } else { // 위 조건들에 모두 부합하지 않을 때 } (경우에 따라 else if 와 else는 꼭 쓰지 않아도 된다.) + if문을 여러개 사용할 경우, 반드시 논리적으로 오류가 없는지 검사해야한다. Swit..

비트 연산자 비트 연산자란, 비트 단위의 연산을 하고자 할 때 사용할 수 있는 연산자들을 말한다. 비트 단위의 연산은 다음과 같이 수행할 수 있다. ~ 는 '부정'의 연산자로, 비트 단위 연산에서의 'Not'이다.[cf) 일반적으론 !가 Not의 의미] 부정의 연산자는 각각의 비트 단위 마다 0과 1을 뒤바꾼다. &는 '그리고'를 뜻하는 연산자로서, 두 비트 중 쉽게 말해, 두개 다 1인 자리만 1값을 가지게 된다. 집합과 관련지어 생각하자면 교집합이라고 생각하면 된다. |는 '또는'을 뜻하는 연산자로서, 두 비트 중 하나라도 1을 가지면 1값을 가진다. 합집합이라고 생각하면 된다. ^는 '배타적' 연산자로, 둘중 1개만 1일 때 1이 된다. 합집합에서 교집합을 뺀 부분이라고 생각하면 된다. > 오른쪽 ..