일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 부자아빠가난한아빠
- 韓国
- 스펙정보
- 200-301
- DevNet
- ios
- 다음메일
- 스마트시티
- gbd-200
- 성능측정
- 한국판뉴딜
- 코로나바이러스
- 사용자100명
- 환경정보
- 리눅스
- 5G
- move앱
- 일본대학원
- 사양정보
- 정보처리기사
- certification
- 명령어
- QA
- 사양
- JMeter
- 동시접속
- ads.txt
- 韓国ヒップホップ
- 4차산업
- 일본유학
- Today
- Total
목록분류 전체보기 (159)
IT 컴퓨터공학 자료실
포인터 토대가 된 책 malloc () 된 포인터 사용 그런데 메모리를 확보 할 유용한 라이브러리 함수 malloc (3)이있다. 이것 자체는 결코 OS의 기능으로 구현되는 시스템 콜은 아니지만 필요에 따라 메모리를 확보하는 시스템 호출 sbrk (2)를 호출한다. malloc (3)는 동적으로 메모리를 확보하기 위해 사용된다. 즉, 런타임에만 크기가 정해지지 않은 배열을 확보하는 데 사용된다. 예를 들어, 편집기 등을 생각해 보면 그 문서를 메모리에 저장하기 위해 메모리가 확보되는 것이지만, 그 크기는 문서의 크기에 의해서만 결정된다.여기에 정적 배열로 확보하면 특정 크기 이상의 파일은 인식 할 수없는 것이다. 이것은 곤란하다. 그래서 이런 경우에는 malloc (3)을 사용하여 동적으로 필요한만큼의 ..
포인터 토대가 된 책 더블 포인터 ** argv 사용이러한 다중 배열을 사용한기구는 C 언어 프로그램에서 많이 사용된다. 대표적인 사례가 명령 줄 인수를 취득하기위한 argc, argv기구이다. 프로그램을 실행할 때,% ls -l -F -a / usr / usr / lib 같이 명령 줄에서 시작한다. 이때 ls 프로그램으로 명령 줄에서 지정된 인수를 프로그램 내부에 들어갈 필요가있다. 이를위한기구로서 argc, argv기구가 준비되어있다.전형적인 C 언어의 main 함수의 정의는 다음이다.int main (int argc, char ** argv) { } 이때 main 함수의 2 개의 인수를 argc, argv라는 이름으로 부르는 것이 상식으로되어있다. (argc = argment count, argv ..
포인터 토대가 된 책 다차원 배열의 실현다차원 배열과 C 언어C 언어는 Fortran이나 BASIC으로 친숙한 다차원 배열을 다루는 수단이 엄격하게 말하면 존재하지 않는다. 이차원 좌표의 개별 값을 저장하는 수단으로 int x [10] [10];과 같은 표현으로 데이터를 확보하고 싶은 것은 어떤 프로그래밍 언어로도 같다. 그러나 C 언어에서 다른 언어로 일반적인 "다차원 배열 '이라는 개념 자체가 존재하지 않기 때문이다. 이유는 정확히 '배열의 배열'이다.그러나 이것은 보통에 결함이 아니다. 대신 데이터 구조로 '디스플레이'로 불리는 데이터 구조를 정의 할 수 있기 때문이다. 디스플레이는 "배열에 대한 포인터 배열 '이다. 즉, 배열에 대한 참조를 가지는 포인터 배열을 정의 할 것이다. 이 모습을 보자...
포인터 토대가 된 책 extern 선언의 함정 - 배열과 포인터의 차이점이러한 배열과 포인터의 차이를 충분히 머리 속에 넣은 다음, 다음 코드를 보자. extern char * str; char * p; p = str; (프로그램 2-1)아무런 특색도없는 코드이지만, str이라는 포인터는 외부 정의가되어있는 것으로되어있다. 그래서이 코드 파일과 다른 파일에서 str의 정의가 이루어지고있는 것이며 링크 할 때 2 개의 파일이 결합되어 하나의 실행 파일이 만들어진다라는 상황 설정이다.이 때 다른 파일의 str의 정의가char * str = "test"; (프로그램 2-2)그렇다면 전혀 문제가 없다. 그러나,char str [] = { "test"}; (프로그램 2-3)인 경우는 결코 제대로 작동하지 않는다...
포인터 토대가 된 책 초기화 문자열의 2 개의 정의지금까지도 "문자열"라는 데이터 오브젝트는 다양한 곳에서 사용왔다. 그러나 그 정의는 직관적 인 것으로 끝 마치고오고있다. 여기서 문자열의 정확한 정의한다. 문자열과 포인터이다.예를 들어 익숙한 표현 printf ( "Hello, world \ n"); (프로그램 1-1)문자열 "Hello, world \ n" 포인터에 다름 없다. 왜냐하면 printf ()의 프로토 타입은 int printf (const char * format, ...);로서, 제 1 인수는 char *이다. 것은 이러한 문자열은 그 자체 포인터 인 셈이다. 이 같은 큰 따옴표로 둘러싸인 표현되는 문자열을 단순한 char *과 구별하여 "문자열 리터럴"라고 부르기로한다.문자열 리터럴은..
포인터 토대가 된 책이진수목록 구조의 응용으로목록 구조를 기초로 다양한 데이터 구조가 만들어진다. 이 예제 중 하나가 "양방향 목록」이지만, 이렇게 2 개의 자기 참조 포인터를 가지고있다 셈이다.struct DList { int data; struct DList * prev; struct DList * next; }; 이 양방향 목록의 경우에는 "하나 앞을 나타내는 포인터 '와'다음을 나타내는 포인터」의 2 개를 가지고있다. 그래서 삽입과 삭제의 경우에는 간단한 목록보다 약간 불편하지만, 어느 방향에서도 체인을 추적 할 수있어 편리하다. 이른바 "관계형 데이터베이스"데이터 구조로 매우 일반적으로 이용되고있다. 즉, 각 행의 데이터 (횡 방향)이 이것으로 표현 된 모든 행에 대한 수직 체인 역시 양방향 목..
포인터 토대가 된 책 리스트 구조구조체를 이용한 응용 예로서 리스트 구조를들 수있다. 리스트 구조는 매우 필수적인 데이터 구조의 하나이며, 응용 범위가 매우 넓다. 이 리스트 구조에 익숙 할 C 언어 초급 졸업 시험이라고해도 과언이 아니다.왜 리스트 구조가 이토록 중요한인가하면, 삭제 및 삽입을 쉽게 할 수 있기 때문이다. 배열의 경우, 특히 삽입은 고비용이다. 배열 데이터 다음에 새로운 데이터를 삽입하려면 그 이후의 데이터를 전부 하나씩 밀어 주어야한다. 삭제의 경우에도 데이터를 채우는 작업을하거나 별도로 플래그를 갖게하고 "잘못된 데이터"를 마킹 해 줄 필요가있다.반면 리스트 구조는 삽입을 낮은 비용으로 할 수 있지만, 대신 배열처럼 인덱스에 의한 랜덤 액세스 할 수 없게된다. 그래서 첨자에 의한 랜..
포인터 토대가 된 책 구조체와 포인터포인터와 구조체와 복합되어 사용되는 경우가 매우 많다. 왜냐하면 구조는 복합 데이터를 구조화하는 수단이며, 따라서 큰 경향이다. 하청 함수에 구조체의 정보를 전달하고자 할 때에는 구조체를 값으로 전달하고 모든 복사하여 전달보다 참조 내게 한 것이 더 효율적이다. 보기 구조체와 배열은 비슷하지만 배열은 배열 이름이 포인터로 해석되었지만 구조가 그런 것은 아니다. 그래서 구조체를 참조로 전달하는 경우에는 처음에는주의해야한다.struct S { char name [10]; int type; }; void sub (struct S * s) { ......... } void main () { struct S a1; sub (& a1); } 특히 라이브러리 함수를 사용할 때주의해..
포인터 토대가 된 책 함수 호출 방법함수 호출에는 두 가지 방법이있다. "값 전달"며 "참조 전달"이다. 하청 함수에 인자로 변수 값을 전달하거나 변수의 주소를 전달 함수의 내부에서 간접 참조 하느냐에 따라 구별되고있다. C 언어의 기본 함수 호출은 "값 전달"하지만 쉽게 "참조 전달"할 수있다. 참조로 전달하기 위해 포인터를 인자로 넘기면된다. 문자열이나 배열을 하청 함수에 전달하려면 기본적으로 참조로 전달된다.void sub1 (char * s) / * 문자열의 참조로 전달 * / { ......... } void sub2 (int * a) / * 배열의 참조로 전달 * / { ......... } void sub3 (int x) / * 일반 값 전달 * / { x = x + 1; } void sub..
포인터 토대가 된 책 포인터의 형태여기서 변수는 정수형 int, 문자형 char 부동 소수점 형 double 등의 형태가 있다는 점에 유의하여 포인터를 살펴 보자.이러한 변수의 형식은 그 변수의 값이 필요로하는 메모리의 정보를 가지고있다. 일반적인 UNIX에서는 int = 4byte, char = 1byte, double = 8byte가 보통이며, 변수의 형태에 따라 변수가 메모리에서 차지하는 것이다 크기가 확보되어있다. 크기를 알기 위해서는printf ( "size of int = % d \ n", sizeof (int)); printf ( "size of char = % d \ n", sizeof (char)); printf ( "size of double = % d \ n", sizeof (doub..