출처:http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/C/Documents/CprogramingForLinuxEnv/Ch10_Pointer#s-10
포인터는 데이터가 저장된 주소를 가리키는 데이터 타입이다. 이는 어떠한 종류의 데이터타입이라도 가리키는 포인터의 생성이 가능함을 얘기한다. int 형 포인터, float 형 포인터가 좋은 예가 되겠다. 2차원 포인터는 포인터 데이터 타입을 를 가리키는 포인터이다. 이러한 특징 때문에 포인터의 포인터라고 부르기도 한다. 2차원 포인터의 가장 단적인 얘는 라인단위 편집기를 예로 들 수 있을 것이다. 아래와 같은 문장이 있다고 가정해 보자.

Hello World!!
My name is yundream.
What's your name.
Thank you.
 


이 문장을 각각의 라인단위로 저장을 하는 프로그램을 만든다고 가정해 보자. 그렇다면 4개의 char 형 포인터가 필요할 것이다. 이제 이 4개의 char 형 포인터 데이터를 저장하기 위한 포인터변수를 만들면 될것이다. 포인터를 저장하는 포인터변수인 셈이다. 포인터의 포인터변수는 별표를 하나 더 붙이는 것으로 간단히 선언할 수 있다. 위 예의 경우 char 포인터를 저장하기 위한 포인터는 아래와 같이 선언할 수 있다.

char **data;
 

차원이 늘어날 수록 그만큼의 별표를 붙여주면 된다. 사용할일이 거의 없겠지만, 3차원 포인터는 다음과 같다.

char ***data;
 


그럼 2차원 포인터를 이용해서 위의 문장을 출력하는 줄단위 출력 프로그램을 만들어 보자. 포인터형 변수의 이름은 char **data로 선언한다. 선언을 했다면, 메모리 할당을 해야 할것이다. 2차원 포인터 이므로 2번의 메모리 할당이 이루어져야 한다.

   1. 4개의 문자형 포인터를 저장하기 위한 공간 할당.
   2. 각 문자데이터를 저장하기 위한 공간할당.

우선 문자형 포인터를 저장하기 위한 공간은 다음과 같이 할당할 수 있다.

char **data;
data = malloc(sizeof(char *)*4);
 

데이터를 저장하기 위한 공간을 할당하려면, 데이터 타입의 크기를 알고 있어야 한다. 앞서 sizeof를 이용하면 데이터 타입의 크기를 얻어올 수 있음을 언급했다. 우리가 저장하기 위한 데이터 타입은 문자형 포인터이므로 sizof(char *)를 이용해서 크기를 얻어올수 있다. 이게 4개가 필요하므로 *4를 해주면 4개의 문자형 포인터 데이터를 저장하기 위한 공간을 할당받게 된다. 포인터 데이터 타입의 크기는 4 이므로 16byte 만큼의 공간을 할당받게 된다.

이제 4개의 문자형 포인터가 사용할 공간을 할당하고, 그 주소값(포인터)를 얻어와야 할 차례다. 원칙적으로 하자면, 각 문자열의 크기만큼 다르게 할당해야 겠으나, 그렇게 하면 귀찮으니, 모든 문자열을 넣기에 충분하다고 생각되는 25byte 를 동일하게 할당해보도록 하겠다. for 루프문을 이용하면 간단하게 할당할 수 있다.

char **data
data = malloc(sizeof(char *)*4);
for (i = 0; i < 4; i++)
{
    *data = malloc(sizeof(char) * 25);
    *data++;
}
 

'It's my study ^^ 과연' 카테고리의 다른 글

Library 만드는 법  (0) 2007.12.14
구조체(Struct)  (0) 2007.12.13
대입연산자  (0) 2007.12.12
Primitive Data Types  (0) 2007.12.10
C/C++ Language  (0) 2007.12.06
대입연산자는 같은 타입에 대해서만 허용되는 연산자이기 때문에, 배열에 문자열을 대입하는건 C 문법에 어긋나기 때문이다. 결국 문자열을 처리하기 위해서는 별도의 함수를 만들어서 사용하는 수 밖에 없다. 다행히 C 는 표준 라이브러리 형식으로 몇개의 유용한 문자열 처리 함수를 제공한다. strcat(3), strcpy(3)와 같은 함수가 문자열 처리를 위한 대표적인 함수다. 다음은 strcpy 함수를 이용해서 문자열을 복사한 프로그램이다.
#include <stdio.h> 

int main()
{
char hello[12];
strcpy(hello,"hello world\0");
printf("%s\n", hello);
}

'It's my study ^^ 과연' 카테고리의 다른 글

구조체(Struct)  (0) 2007.12.13
이중 포인터  (0) 2007.12.13
Primitive Data Types  (0) 2007.12.10
C/C++ Language  (0) 2007.12.06
Comback of Se Ri Pak  (0) 2007.08.17

Primitive Data Types

인간은 매우 다양한 형태의 데이터를 다루기를 원하고, 그런일을 할 수 있는 프로그램을 만들어 낼 수 있어야 한다. 다루는 데이터의 형태가 다양하니, 데이터 타입 역시 다양하면 좋을 것이다. 그러나 컴퓨터는 매우 단순한 기계다. 쓸데없이 데이터 타입을 이것 저것 만들면, 이것을 다루는 컴퓨터 역시 달가워하지 않을 것이다. 프로그래머 역시 각 데이터 타입에 따른 고려사항이 늘어나니 권장할만한 사항이 아니다.

그래서 데이터타입을 다루어야 하는 프로그래밍 언어는 Primitive Data Type이라고 불리우는 최소한의 반드시 필요한 데이터 타입을 지원하고 있다. Primitive Data Type은 원시 데이터 타입 이라고 부르기도 한다.

각 원시 데이터 타입은 고유의 크기를 가지고 있으며, 표현할 수 있는 데이터의 한계가 정의되어 있다. 다음은 C 언어에서 지원하는 원시 데이터 타입과 크기, 데이터 범위를 보여주는 표다.

숫자형 원시 데이터 타입

숫자를 표현하기 위해서 사용되는 데이터 타입이다. 크게 정수형 데이터를 표현하기 위한 정수형 원시 데이터 타입부동소숫점형 원시 데이터 타입으로 나눌 수 있다.
  • 정수형 원시 데이터 타입
    char 1byte -128 127
    short 2byte -32768 32767
    long int 4byte 2,147,483,648 2,147,483,647
    long long int 8byte 9,223,372,036,854,775,808 9,223,372,036,854,775,807

이들 정수형 데이터 타입들은 signed비트라는 것을 가지고 있어서, 음수까지 표현할것인지를 정의할 수 있다. 음수까지 표현할 거라면 signed를 양수만 표현할거라면 unsigned를 타입의 앞에 붙여준다. 따로 붙여주지 않았다면 signed 가 붙은걸로 해석을 한다. 즉 위의 데이터 타입은 실제로는 signed char, signed short, signed long int, signed long long int와 동일하다.

unsigned를 명시하게 되면 양의 정수만 표현하게 된다. 음의 정수를 표현할 필요가 없으니 그만큼 양수 쪽으로 표현범위가 늘어날 것이다. unsigned char 이라면 255, unsigned long int 라면 4,294,967,295 가 된다.

  • 부동소숫점형 원시 데이터 타입
    float 4byte +/- 10E-37 +/- 10E38
    double 8byte +/- 10E-307 +/- 10E308

'It's my study ^^ 과연' 카테고리의 다른 글

이중 포인터  (0) 2007.12.13
대입연산자  (0) 2007.12.12
C/C++ Language  (0) 2007.12.06
Comback of Se Ri Pak  (0) 2007.08.17
feasibility  (0) 2007.08.14

프로그래밍을 처음접하는 분들에게 정보를 제공하기 위해서 만들어진 페이지 입니다.

리눅스에 대해서 잘 모르신다면 [http]우분투 리눅스 한글문서 페이지를 방문하시기 바랍니다. 설치에서 부터 활용까지 자세한 내용을 가진 좋은 문서들을 찾을 수 있습니다.

약 1주일 정도면 리눅스를 크게 무리 없이 사용할 수 있는 수준에 이르렀을 겁니다. 그렇다면 본격적으로 프로그래밍의 세계에 발을 들여 놓을 차례입니다. 리눅스환경에서의 C 프로그래밍문서로 C언어 입문과정을 거칠 수 있습니다.


위 문서는 아마 보름정도면 충분히 다 보실 수 있을 겁니다. 그렇다면 이제 응용단계로 넘어가야 합니다. 리눅스 시스템 프로그래밍 문서를 읽어보시기 바랍니다. 초/중급 수준에서 리눅스 시스템을 다루기 위한 프로그래밍 기법들이 포함되어 있습니다. 혹은 여유를 가지고어셈블리어에 대해서 공부하는 것도 좋은 방법입니다. 요즘에는 Assembly를 사용하는 경우가 흔치 않기 때문에 배울필요가 있을런지 생각할 수도 있을 겁니다. 그러나 어셈블리어는 언어자체보다 컴퓨터에 대한 근본에 접근할 수 있다는 점에서 기초를 쌓기에 매우 좋은 언어입니다.

시스템 프로그래밍 문서를 다 읽었다면, 이제 네트워크 프로그래밍 과정이군요. 네트워크 프로그래밍문서들을 차근 차근 읽어보세요. 역시 초/중급 수준에서의 네트워크 프로그래밍 기법들이 포함되어 있습니다.

리눅스 환경 -> C 언어 스터디 -> 시스템 프로그래밍 -> 네트워크 프로그래밍 과정을 끝냈다면, 이제부터 무엇을 어떻게 공부할건지를 선택할 수 있게 될겁니다. Joinc 미니사이트에 주제별로 다양한 문서들이 준비되어 있습니다. 하루 2-3 시간 기준으로 대략 다음과 같은 시간이 소비될 것으로 생각됩니다. 물론 어디까지나 입문과정 입니다.

  1. 어셈블리어 : 1달 (여유가 있다면 추천)
  2. 리눅스 입문 / 활용 : 1달
  3. C 프로그래밍 입문 : 3주 - 4주
  4. 시스템 프로그래밍 입문 : 1달
  5. 네트워크 프로그래밍 : 1달

 

 

이 글은 스프링노트에서 작성되었습니다.

'It's my study ^^ 과연' 카테고리의 다른 글

대입연산자  (0) 2007.12.12
Primitive Data Types  (0) 2007.12.10
Comback of Se Ri Pak  (0) 2007.08.17
feasibility  (0) 2007.08.14
portrait  (0) 2007.08.14

'It's my study ^^ 과연' 카테고리의 다른 글

Primitive Data Types  (0) 2007.12.10
C/C++ Language  (0) 2007.12.06
feasibility  (0) 2007.08.14
portrait  (0) 2007.08.14
annoying  (0) 2007.08.14
feasibility      1. 실행할 수 있음; 실현 가능성. 2. 편리.

사업성검토
계획된 프로젝트가 기술적 및 경제적으로 시행이 가능한가를 조사, 검토하는 일련의 과정을 가리킨다. 사업성 검토는 프로젝트 발주자가 하기도 하지만 프로젝트 금융을 제공하는 금융기관도 별도로 하게 되며, 조사 및 검토항목은 시장성검토, 기술 검토, 경제성검토가 있다.

타당성 조사
공장을 건설하고 광산을 개발하거나 혹은 철도를 부설하는 등 새로운 프로젝트를 시작하기에 앞서 그 프로젝트의 채산성을 미리 조사하는 것. 어떤 프로젝트를 실시할 경우 우선 기술적인 타당성이 문제가 되지만 기술적으로 가능하다 할지라도 건설코스트가 지나치게 높으면 채산이 맞지 않을 수도 있다. 또한 제철소, 석유화학플랜트...

플랜트 수출
... 설계ㆍ조사(feasibility study)에 많은 시간과 비용이 들며 통상 장기간의 연불(분할급)이 되기 때문에 수출금융의 문제, 또는 정정불안으로 인한 컨트리 리스크에 대비한 보험등의 이용도 필요하게 된다. 또한 장기적으로는 현지에서의 제품의 역수입이라고 하는 부메랑효과가 해당산업에 미치는 영향도 고려되어야 할 것이...

 

[일반] Mr. Wright will oversee the venture's activities including feasibility studies, financial planning and distribution development in Indonesia.
라이트씨는 업무 기획, 재정 업무 그리고 유통확장 등을 포함한 인도네시아에서의 이 회사의 전반적인 업무를 감독하게 될 것이다.

 
[일반] His talk today based on his research at the institute will be on the feasibility of towing icebergs from Antarctica to the Middle East, as a source of fresh water for the thirsty countries of the region.
오늘의 강연 주제는 연구소의 연구 내용을 토대로 한것으로 급수난을 겪고 있는 중동 지역 국가들에게 식수를 공급하기 위한 일환으로 남극 빙산을 중동으로 수송하는 것이 과연 가능한가에 대한 것입니다.  
 

'It's my study ^^ 과연' 카테고리의 다른 글

C/C++ Language  (0) 2007.12.06
Comback of Se Ri Pak  (0) 2007.08.17
portrait  (0) 2007.08.14
annoying  (0) 2007.08.14
outstanding  (0) 2007.08.14

1. 초상; 초상화, 비슷한 얼굴; 인물[얼굴] 사진; 흉상, 인물상.
2. 말로 한 묘사, 서술.

초상 (肖像 portrait) 
인물의 용모·자태 등을 묘사한 회화·조각. 초상화·초상조각·초상사진 등이라고 부른다. 전신상(全身像)에서 두부상(頭部像)까지 여러 가지 표현법이 있다. 또 집단을 그린 것, 자매나 부부 등 2∼3명을 그린 것도 있다. 초상의 역사는 수메르의 <구데아> 조각상 및 이집트 고왕국시대의 왕·수장(首長) 등의 상을 표현한...
자화상 (自畵像 self-portrait) 
화가 또는 조각가가 자기 자신을 표현한 작품. 조각가의 경우는 자각상(自刻像)이라고도 한다. 일찍이 그리스 화가들에 의해 시도된 것이 문헌에 전하며, 중세에는 조각·미니아튀르 등에 약간의 예가 보인다. 15세기 무렵 플랑드르·이탈리아에서 제단화(祭壇畵)·벽화 등의 군상(群像) 속에 자화상이 등장하기 시작하였는데,...
어느 부인의 초상 (-婦人-肖像 The Portrait of a Lady) 
미국 소설가 H. 제임스의 장편소설. 1881년 간행되었다. 인생의 자유롭고 무한한 탐구를 꿈꾸는 미국 처녀 이자벨은 숙모를 따라 영국으로 건너가 이탈리아에서 알게 된 미국인 오즈먼드의 후처가 된다. 한편 전처의 딸 판지이는 자기집에 출입하는 마담 마아르의 아들과 알게 된다. 이자벨은 남편이 자기의 재산을 노린다는...


'It's my study ^^ 과연' 카테고리의 다른 글

C/C++ Language  (0) 2007.12.06
Comback of Se Ri Pak  (0) 2007.08.17
feasibility  (0) 2007.08.14
annoying  (0) 2007.08.14
outstanding  (0) 2007.08.14


성가신, 난처한, 귀찮은, 골치 아픈.
~·ly ~·ness

'It's my study ^^ 과연' 카테고리의 다른 글

C/C++ Language  (0) 2007.12.06
Comback of Se Ri Pak  (0) 2007.08.17
feasibility  (0) 2007.08.14
portrait  (0) 2007.08.14
outstanding  (0) 2007.08.14

+ Recent posts