일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 사양정보
- 사용자100명
- DevNet
- 스마트시티
- 명령어
- 韓国ヒップホップ
- 일본대학원
- 환경정보
- certification
- 사양
- 부자아빠가난한아빠
- 스펙정보
- 국제표준
- 일본유학
- 4차산업
- 5G
- 동시접속
- 200-301
- ccna
- 한국판뉴딜
- 실기
- JMeter
- 성능측정
- 韓国
- 코로나바이러스
- 정보처리기사
- ads.txt
- 리눅스
- QA
- ios
- Today
- Total
목록전체 글 (157)
IT 컴퓨터공학 자료실
포인터 토대가 된 책 다차원 배열의 실현다차원 배열과 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..
포인터 토대가 된 책 주소 가져오기그래서, 포인터는 그 주소로 주소가 가리키는 메모리를 참조하는 기능과 단순한 수치로 그에 대한 가산하거나 할당하거나하는 기능의 두 가지 측면이 있음을보고왔다.C 언어에서 변수로 사용되는 것은 원칙적으로 모든 주소를 검색 할 수있다.예를 들어int x; / * 예를 들어 1000 번지 * / int * p; void main () { x = 10; / * 1000 번지가 10이 * / p = & x; / * p = 1000 * / * p = 33; / * 1000 번지 33합니다. * / printf ( "x = % d \ n", x); } (프로그램 4-1)을 실행하면 10이 아니라 33을 출력한다. & 기호는 변수 x의 주소를 취득하는 것을 나타내, "p = & x;"..
포인터 토대가 된 책 문자열 처리포인터는 현실적으로는 문자열을 처리 할 때 자주 사용된다.char str [10] = { "this text"}; C 언어에서는 이상과 같이 초기화한다. 이 유형의 초기화는 DS에 10 개의 char가 필요한만큼 메모리를 확보한다. 확보 된 메모리의 시작 주소를 1000으로한다.그러면 메모리는 다음과 같다.1000 0x74 (ASCII의 't') 1001 0x68 (ASCII의 'h') 1002 0x69 (ASCII의 'i') 1003 0x73 (ASCII의 's') 1004 0x20 (ASCII의 '') 1005 0x47 (ASCII의 ' t ') 1006 0x65 (ASCII의 'e') 1007 0x78 (ASCII의 'x') 1009 0x47 (ASCII의 't') ..