본문 바로가기

Programming/C Language

(40)
서식문자의 종류와 그 의미 꼭 한번은 정리해야 될것 같아서 이번 기회를 통해 정리한다. 많은 서식문자 중 우리가 주로 접하고 사용하는 서식문자 위주로 정리하겠다. 서식문자 출력 대상(자료형) 출력 형태 %d char,short,int 부호 있는 10진수 정수 %ld long 부호 있는 10진수 정수 %u unsigned int 부호 없는 10진수 정수 %o unsigned int 부호 없는 8진수 정수 %f float,double 10진수 방식 부동소수점 실수 %lf long doubl 10진수 방식 부동소수점 실수 %c char,short,int 값에 대응하는 문자 %s char * 문자열 %p void * 포인터의 주소값 일반적으로 자주쓰이는것들 위주로 정리한다. 앞으로 기억 안날때마다 들어와서 개념을 다잡고 가야겠다.
typedef 선언 이번에는 구조체 정의에 빠질수 없는 typedef 선언에 대해 정리한다. typedef선언은 복잡한 유형의 자료형 선언을 좀더 유연하게 편리하게 해준다. 일종의 자료형 치환 개념으로 보면 이해가 쉽다. typedef선언이 무엇인지 살펴보자 , typedef선언은 기존에 존재하는 자료형의 이름에 새 이름을 부여하는 것을 목적으로 한다. 예를 보자.typedef int INT; //int의 또 다른 이름 INT부여 위 선언으로 인해 컴파일러에게 "자료형의 이름 int에 INT라는 이름을 추가로 붙여준다 . "라고 전한다.이렇게 되면 INT num; 은 int num; 과 동일한 선언이 된다. 다음 예제를 살펴보자 3~8행 typedef선언을 통해 자료형을 치환하고 , 12행부터 typedef 선언을 한 자료..
구조체 예제 이번에는 앞서 배운 구조체를 예제를 통해 이해해보자! 이번 예제는 사용자로부터 두 점의 x , y 좌표 정보를 입력받아서 두 점 사이의 거리를 계산하여 출력하는 프로그램을 짜보겠다! 3행에서 구조체를 정의한다 , 11행에서 구조체 변수 pos1과 pos2를 선언한다. 15행과 18행을 통해 각각의 구조체변수의 멤버들의 값을 입력받는다. 22행의 sqrt함수를 사용하기위해 상단부에 math.h헤더 파일을 선언하였다. 값의 결과는 직접 짜서 확인해보자. ( ps , 두 점사이의 거리 계산 공식을 함수로 만들어서 호출하는것이 좀더 깔끔할듯 하다.)
구조체 ( Structure ) 이번 파트에서는 진짜 엄청 중요한 구조체 를 정리할 것이다! 구조체 : 하나 이상의 변수( 포인터 , 배열 포함)들을 묶어서 새로운 자료형을 정의하는 도구 구조체를 이용하면 우리는 새로운 자료형을 정의할 수 있다. 그러면 구조체가 어디에 필요할지 한번 생각해보자 , 예를들어 위치의 정보를 담는 프로그램을 개발한다고 가정해보자. 위치라는 것은 좌표의 개념으로 x , y 축의 좌표들의 정보를 알아야한다. 그러면 다음과 같이 2개의 변수를 선언해야 한다. int xpos; // x좌표int ypos; // y좌표 그런데 이 두 변수들은 서로 독립된 정보를 표현하는 것이 아닌 위치리는 하나의 정보를 표현하기 위해 사용되어야 한다. 즉 , 만일 위치를 출력하는 함수가 있다면 그 함수는 x좌표와 y좌표에 저장된 값..
문자,문자열 관련 함수 프로그램상에서 문자열 표현 및 처리는 매우 중요하다. 인간에게 전달되는 정보의 대부분이 문자열로 표현되기 때문이다. 때문에 C언어에서 이들과 관련된 표준함수들이 다수 정의되어 있는데 이번에는 이러한 표준함수들을 정리해보자! (추후 파일입출력 파트에서 바탕을 이룸.) 이번 파트에는 단순히 몇개의 함수를 공부하는 정도가 아니라 데이터의 이동 경로를 의미하는 "스트림"그리고 이를 기반으로 하는 "데이터 입출력"에 대해 개념적으로 이해하자 입력 이란 프로그램을 중심으로 프로그램 안으로 데이터가 흘러 들어오는 것을 의미하고 출력은 반대로 프로그램 밖으로 데이터가 흘러 나가는 것을 의미한다. 대표적인 입력장치로는 키보드가 있고 출력장치로는 모니터 등이 있다. 우리가 구현하는 프로그램들은 입력장치들과 기본적으로 연결..
다차원 배열 이번 시간에는 다차원 배열에 대해 정리하도록 하겠다. 다차원 배열이라 함은 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형 포인터 배열을 선언하고 각 배열..