| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 자료구조
- 자바스크립트
- 인접 행렬
- 코딩테스트준비
- 코딩테스트사이트추천
- 항해99
- Java
- 파이썬
- 프로그래밍 언어
- 플로이드-워셜
- 자바
- C
- 코테공부
- 개발자루틴
- 개발자취업
- 알고리즘
- 1일1코테
- 데이터베이스
- 코드트리
- 코딩테스트
- 오블완
- 웹
- 운영체제
- #코드트리 #코딩테스트 #코테공부 #백트래킹 #알고리즘 기초
- 99클럽
- 연결 리스트
- 티스토리챌린지
- 갭체크
- til
- 프로그래머스
- Today
- Total
목록C (20)
와드의 블로그
(1) 함수 포인터 * 프로세스 메모리 영역에 저장되는 명령 C 언어로 작성한 소스 코드가 컴파일러에 의해 기계어로 번역되면 실행 파일이 된다. 이 실행 파일은 CPU가 처리할 수 있는 기계어 명령문 단위로 이루어진다. 그리고 해등 프로그램이 실행되어 프로세스 형태로 메모리에 저장되면 프로그램의 명령문들은 코드 세그먼트에 옮겨진다. 결국 명령문들도 메모리에 저장되어 있기 때문에 각 명령문마다 주소를 갖는다는 뜻이다. * 함수 포인터란? 함수 포인터란 특정 함수를 구성하는 시작 명령의 위치를 가리키는 포인터이다. 함수 포인트를 사용하면 해당하는 함수를 호출하여 실행할 수 있다. 함수의 주소 값으로 함수 실행하기 int Sum(int a, int b) { return a + b; } int (*p)(int,..
(1) 표준 입출력 라이브러리 * 표준 입출력 라이브러리란? 컴퓨터의 주기억 장치인 램은 컴퓨터의 전원이 켜져 있을 때만 데이터를 유지할 수 있다. 따라서 운영체제는 컴퓨터가 꺼져도 데이터를 유지할 수 있는 보조기억 장치를 사용한다. 보조기억 장치에서 데이터를 읽고 쓰는 것은 운영체제마다 다르기 때문에 C언어는 표준 입출력 라이브러리를 제공한다. 이 라이브러리를 사용하면 보조기억 장치에 파일 단위로 데이터를 저장하거나 읽을 수 있다. (2) 파일 열기와 닫기 * 파일 입출력 함수의 도우미 FILE 구조체 표준 입출력 라이브러리는 FILE 구조체로 포인터 변수를 선언하고 파일 입출력 함수를 호출할 때마다 이 변수를 넘겨주도록 만들어져 있다. FILE 구조체는 사용하려는 디스크 상의 파일이 어떤 상태로 사용..
(1) typedef 문법 * typedef 문법 사용하기 typedef 문법은 기존의 자료형 중에 자료형 이름의 길이가 긴 경우 프로그래머가 짧고 간결하게 자료형을 재정의하는 문법이다. #define과 기능이 비슷해 보이지만 #define은 치환 작업을 수행하는 전처리기이고 typedef는 기존 자료형을 다른 이름으로 새롭게 정의하는 기능이다. typedef unsigned short int US // unsigned short int형을 US라는 새로운 이름으로 정의한다. * typedef의 장점 typedef는 일반 변수 형식뿐만 아니라 배열, 포인터와 같은 형식도 재정의할 수 있다. typedef는 소스 코드 전체의 자료형을 쉽게 바꿀 수 있다. (2) 데이터를 그룹으로 묶는 구조체 * 데이터의 ..
(1) 다차원 포인터 개념 * 다차원 포인터란? 다차원 포인터는 간접으로 여러 번 가리키는 포인터이다. 포인터 변수를 선언할 때 * 키워드를 한 개만 사용한 포인터를 1차원 포인터라고 이야기하며 * 키워드를 하나씩 더 사용할 때마다 차원이 하나씩 증가한다. 이처럼 * 키워드를 두 개 이상 사용해서 선언한 포인터를 다차원 포인터라고 한다. (2) 2차원 포인터 * 2차원 포인터의 선언과 사용 2차원 포인터는 다음과 같이 * 키워드를 두 개 사용해서 선언한다. int** pp; 그래서 포인터를 사용할 때, pp, *pp, **pp처럼 * 연산자를 최대 2개까지 사용할 수 있다. * 2차원 포인터의 구성 2차원 포인터는 1차원 포인터의 주소 값을 저장하는 데 사용된다. int **pp, *p, data = 3..
(1) 프로세스와 메모리 할당 * 프로그램과 프로세스 C 언어로 작성한 소스 파일은 컴파일과 링크를 거쳐서 실행 파일이 된다. 이렇게 프로그래머가 만든 실행 파일을 프로그램이라고 부른다. 그런데 실행 파일에 있는 명령들을 CPU가 직접 실행할 수 없다. CPU가 이 명령들을 실행하려면 먼저 운영체제가 실행 파일의 명령들을 읽어서 메모리에 재구성하는 데, 이를 프로세스라고 한다. 프로세스는 명령들 뿐만 아니라 다양한 메모리 공간을 포함하는데 이러한 공간을 세그먼트라고 한다. 코드 세그먼트: 실행 파일의 명령들을 복사해 저장하는 부분 데이터 세그먼트: C 언어에서 사용한 문자열 상수나 전역 변수, static 변수가 이 영역에 저장된다. 스택 세그먼트: 프로그램 실행 중에 필요한 임시 데이터를 저장하는 데 ..
(1) 배열과 포인터 표기법 * 배열 표기법과 포인터 표기법의 관계 배열은 [] 연산자를 사용하여 표현하고 포인터는 * 연산자를 사용하여 나타낸다. 포인터는 포인터 변수가 가리키는 메모리의 시작 주소를 기준으로 삼고, 배열도 해당 배열이 사용하는 메모리 그룹의 시작 주소를 기준으로 삼는다. 따라서 두 문법은 표기만 다를 뿐 비슷한 문법이다. 그래서 배열과 포인터는 표기법을 서로 바꿔 쓸 수 있다. char data[5] data[1] = 5; // 둘은 같은 동작을 한다. *(data + 1) = 5; char data; char* p = &data; *p = 3; // 둘은 같은 동작을 한다. p[0] = 3; (2) 배열 시작 주소 * 배열 변수의 이름은 배열의 시작 주소 포인터는 일반 변수의 주소만..
(1) 표준 입력 함수 * 표준 입력 함수란? 표준 입력 함수는 시스템의 여러 가지 입력 장치를 표준화하기 위해, 장치의 입력 정보를 읽는 것을 컴퓨터가 파일에서 데이터를 읽는 것처럼 구성한다. 입력되는 값들을 하나씩 바로 처리하는 것이 아니라 일정한 조건이 될 때까지 모았다가 처리한다. * 표준 입력 버퍼 특정 키를 누를 때까지 사용자 입력을 임시로 저장하는 메모리를 표준 입력 버퍼라고 한다. 입력 버퍼의 초기화: 여러 개의 정보를 입력하고 특정 키를 눌렀는데 입력 버퍼에 있는 내용을 전부 사용하지 않았다면 입력 버퍼를 초기화해 줘야 한다. rewind 함수를 이용하면 입력 버퍼를 초기화할 수 있다. (2) 문자와 문자열 입력 함수 * 문자 한 개를 입력 받는 getchar 함수 include int ..
(1) 운영체제의 메모리 관리 방식 * 운영체제와 프로그래밍 지금까지 변수를 사용하여 메모리에 데이터를 저장하거나 읽었다. 변수들은 컴파일 작업 후 모두 메모리 주소로 바꾸어 적용되고 운영체제가 이 메모리를 관리한다. * 메모리 주소 지정 방식 운영체제는 메모리 주소를 1바이트 단위로 관리한다. 직접 주소 지정 방식: 메모리를 사용할 때 프로그래머가 사용할 메모리 주소를 직접 적는 방식으로 변수에 값을 대입하는 것과 같다. 간접 주소 지정 방식: 메모리에 데이터가 담긴 주소를 저장하고 이 주소를 통해 데이터에 접근한다. 데이터의 위치가 바뀌면 주소만 수정하면 되기 때문에 명령어를 바꿀 필요가 없다. (2) 포인터 * 포인터란? 포인터 변수는 메모리 주소를 저장하기 위한 변수이다. 포인터 변수는 일반 변수..
(1) 배열 * 배열이란? 배열: 같은 자료형의 데이터를 그룹으로 묶어서 표현하는 것이다. * 배열의 선언과 사용 #include int main() { int arr[5] = { 1,2,3,4,5 }; // 배열의 선언 int sum = 0; for (int i = 0; i < 5; i++) sum += arr[i]; // 배열의 인덱스는 0부터 시작 printf("%d", sum); return 0; } * 배열의 초기화 배열은 각 요소에 일정한 값을 대입하여 초기화해서 사용해야한다. 선언과 동시에 초기화 하는 방법이 있고 선언 후에 반복문을 통해 초기화할 수 있다. 배열을 선언과 동시에 초기화할 경우 배열을 선언할 때 배열 요소 개수를 생략할 수 있다. 배열 0으로 초기화하기 int arr[100]..
(1) 함수 안에서만 사용하는 지역 변수 * 지역 변수 살펴보기 지역 변수: 함수 안에서 선언한 변수나 매개변수로 함수가 호출될 때 생성됐다가 함수 호출이 끝나면 사라진다. 서로 다른 함수에 선언된 지역변수는 이름이 같아도 상관없다. (2) 프로그램 전체에서 사용하는 전역 변수 * 전역 변수 살펴보기 전역 변수: 함수 밖에서 선언한 변수로 프로그램이 시작할 때 만들어졌다가 프로그램이 종료될 때 사라진다. 전역 변수는 프로그램 전체 영역에서 사용할 수 있다. 전역 변수는 특정한 초기화 값이 없으면 0으로 초기화된다. * 전역 변수와 지역 변수의 이름이 같다면? 전역 변수와 지역 변수는 이름이 같더라도 오류가 나지 않고 전역 변수보다 지역 변수로 우선해서 처리한다. (3) extern 키워드 * 소스 파일을..