전체 글 19

4. 포인터 연산

포인터를 대상으로 연산할 때 + - += -= ++ -- 연산 가능. 이 때 연산되는 값들은 자료형의 크기에 따라 달라짐 무슨말이냐 하면 int *ptr1 = 0x01; // 임의의 주소 double *ptr2 = 0x02; // 임의의 주소 ptr1 += 1; // ptr은 0x05를 가리키게 됨 --> int형의 메모리크기인 4바이트씩 증가 ptr1 += 2; // ptr은 0x0d를 가리키게 됨 ptr2 += 1; // ptr은 0x0a를 가리키게 됨 --> double형의 메모리크기인 8바이트씩 증가 배열도 포인터와 마찬가지로 *연산이 가능하므로 포인터 연산처럼 +, -, +=, -=, ++, -- 연산이 가능함 int arr[3] = {11,22,33}; int *ptr = arr; *(arr+..

C언어 2022.09.14

3. 포인터와 배열

1. 배열의 이름의 사용법 - 배열의 이름은 첫번째 인자의 주소값에 대한 정보를 담고있다 --> 주소값을 담고있다 - 허나 배열의 이름은 다른 배열 혹은 변수를 가리킬 수 없다 --> 포인터의 상수적 형태를 띤다 - 따라서 scanf에서 배열이 다른 변수처럼 &를 사용하지 않아도 되는 이유가 변수는 &를 통해 주소값을 반환해야되지만, 배열의 이름은 그 자체로 주소값을 가지고 있으므로 &연산자가 필요없는 것이다. ※ 포인터변수와 배열의 이름은 변수와 상수라는 차이가 유일한 포인터변수와 배열의 차이점이다. - 메모리 접근 --> 둘 다 *연산을 통한 메모리 접근이 가능하다 --> 둘 다 []를 통해 배열처럼 접근도 가능하다 int arr[] = {1,2,3,4,5}; int* ptr = arr; ptr[3]..

C언어 2022.09.14

2. 포인터

2-1. 포인터란? - 변수나 여러가지 것들이 저장되어있는 메모리공간의 주소값을 저장해주는 단위이다. - 포인터는 변수형태와 상수형태 모두 존재한다. 이는 뒤에서 자세히 다루겠다 - 주소값은 그 주소값이 가리키고 있는 자료의 자료형과는 관계없이 항상 정수형이다.--> int의 주소값, float의 주소값, double의 주소값, char의 주소값...등등등 모두 다 정수 형태이다. 값만 다를 뿐이다. - 변수의 주소값은 변수의 자료형과 맞는 포인터 변수에 저장되어야 한다.--> int형 변수의 주소값은 int형 포인터 변수에, float형 변수의 주소값은 float형 포인터 변수에... 등등에 저장되어야 한다. 그럼 우리는 두 가지 질문이 생길 수 있다. 1. 주소값은 변수의 자료형과는 무관하게 무조건 ..

C언어 2022.09.14

1. 배열

1. 1차원 배열 1-1 배열이란?: - 변수들을 하나로 묶은 단위로, 다수의 변수를 선언하고 접근하기 위해 사용됨. - 배열은 단순히 변수들을 묶는 기능을 할 뿐만 아니라 다수의 변수들에 순차적인 선언과 순차적인 접근을 가능하게 해준다. 1-2 배열의 선언 및 접근 방법 1-2-1 기본형 int arr[5]; // 자료형 배열 이름[배열 길이]; arr = {1,2,3,4,5} // 배열 arr을 1,2,3,4,5값으로 초기화 1-2-2 선언과 동시에 초기화 가능 int arr[5] = {1,2,3,4,5}; 1-2-3 배열의 길이 생략 가능 --> 배열의 길이를 생략하면 컴파일러가 배열의 길이를 세서 자동으로 할당함 int arr[] = {1,2,3,4,5}; // 배열의 길이는 5로 할당됨 1-2-..

C언어 2022.09.14

0. C언어란?

일단 C언어에 대해서 공부를 시작하기 전에 C언어가 어디에 어떻게 쓰이는 어떤 언어인지부터 알고 공부를 하는 것이 좋겠다. C언어는 하드웨어와 가까운 고급언어로 저급언어 프로그래밍이 가능하다. 따라서 다른 고급 언어들에 비해 메모리를 많이 차지하지도 않고, 실행 속도가 빨라 임베디드 프로그래밍등 시스템과 가까운 프로그래밍에 많이 쓰인다. 임베디드란 기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다. 대표적인 C언어가 사용된 임베디드 시스템으로는 화성 탐사선등이 있다. 따라서 이런 C언어의 작동 원리를 알아야 프로그래밍의 기본을 안다고 할 수 있는것이다.

C언어 2022.09.14

계기

학교 공부를 따라가기 힘들어서 어디서부터 놓친건가 생각을 해봤더니 C언어를 배울 때 함수까지만 열심히 배우고 포인터부터는 머리아프다고 공부를 안해서 그랬던 것 같다. 그러다보니 학교 수업을 들어도 이해가 안되고 이해가 안되면 또 내 능력과는 별개로 학년만 올라가고 학점은 낮아지고... 이 과정이 반복될 것 같아서 군대 가기 전 한학기의 여유가 있었는데 휴학을 해버렸다. 휴학하고 나서 그 시간을 노는데 쓰지 않고 휴학한 이유를 이행하기 위해 쓰려고 노력중이다. 과외와 알바를 많이 늘려서 돈좀 모아두고 C언어부터 시작해서 C++, 자료구조까지 독학으로 공부해서 정리해놓고 군대갈 계획이다. 물론 혹자는 그래봤자 군대 갔다오면 다 까먹게 될 거 뭐하러 공부하냐 그럴 것이다. 틀린말도 아니지만 공부좀 해놓고 이렇..

C언어 2022.09.14

12. 네트워크 프로토콜

지난 포스팅에선 네트워크의 계층구조와 기본 장비들에 대하여 정리하였다. 이번 포스팅에선 네트워크의 프로토콜에 대하여 정리하며 정보처리 기능사에 대한 정리를 마치겠다. 1. 프로토콜이란? - 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계 - 정보 전달 시에 지켜야 하는 규칙 통신 규칙 - 기본요소: ● 구문(SYNTAX): 전송하고자 하는 데이터의 형식, 부호화, 신호레벨 등을 규정 ● 의미(SEMANTIC): 전송 제어와 오류 제어를 위한 제어 정보를 포함 ● 시간(TIMING): 두 개체 간의 통신 속도를 조정하거나 메시지의 전송 및 순서의 제어 정보를 나타냄 2. 프로토콜 특징 2.1 단편화 : 전송이 가능한 작은 블록으로 나누어지는 것 2.2 재조립 : 단편화되어 온 조..

11. 네트워크 계층구조와 기본 장비들

지난 포스팅에선 운영체제의 핵심 기능에 대하여 정리하였다. 이번 포스팅에선 네트워크의 계층구조와 기본 장비들에 대하여 정리하겠다. 1. 네트워크란? - 정보를 전달하기 위한 기반 인프라 - 두 대 이상의 컴퓨터를 유선 혹은 무선으로 연결하여 자원을 공유하는 것 2. 네트워크 유형 2.1 LAN(근거리 네트워크): ● 건물 내 같은 작은 규모의 네트워크 ● 전송속도가 빠르고 에러 발생율이 낮다 ● 종류: 버스형, 링형, 스타형, 계층형, 메쉬형-->토폴로지(네트워크를 구성하는 노드와 노드간의 연결 상태에 대한 배치)에 따라 결정됨 2.2 MAN(도시지역 네트워크): ● LAN에 비해 넓고 WAN에 비해 좁은 네트워크 2.3 WAN(광대역 네트워크): ● 국가와 국가, 지역과 지역을 연결 ● 라우팅 알고리즘..

10. 운영체제의 핵심 기능

지난 포스팅에선 각 운영체제별 특징들에 대하여 정리하였다. 이번 포스팅에선 운영체제의 핵심 기능에 대하여 정리하겠다. 운영체제 핵심기능 - 운영체제는 중앙 처리 장치, 메모리, 스토리지, 주변 기기등을 적절히 관리한다 - 특히 주기억 장치와 메모리, 메모리와 스토리지 사이의 속도차를 커버하기 위한 여러 기법들이 있다 1. 메모리 관리 프로그램의 실행이 종료될 때 까지 메모리를 가용한 상태로 유지 및 관리하는 기능 1.1 가상 메모리 ● 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 부여하는 방식 ● 가상 주소 공간은 메모리 관리 장치(MMU)에 의해 물리 주소로 변환됨 ※ MMU(메모리 관리 장치): - CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품. - 가상 메모리 주소를..

9. 각 운영체제별 특징

지난 포스팅에선 운영체제의 기본 용어에 대하여 정리하였다. 이번 포스팅에선 각 운영체제별 특징들에 대하여 정리하겠다. 1. Windows 1.1 개요 1.1.1 마이크로소프트사가 개발한 운영체제 1.1.2 버전 종류: 95, 98, me, xp, vista, 7, 8, 10 1.1.3 주요 특징: 1.1.3.1 GUI: 그래픽 사용자 인터페이스: ● 마우스로 모든 작업을 수행하는 방식 ● 그래픽 환경을 기반으로 한 마우스나 전자펜을 이용하는 사용자 인터페이스 1.1.3.2 선점형 멀티 태스킹: ● 멀티 태스킹: 다수의 작업이 중앙처리장치와 같은 공용자원을 나누어 사용하는 작업 처리 시스템 ● 선점형 멀티 태스킹: - 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행 중 문제가 발생 하..