일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Google reCaptcha
- C언어 변수
- GUI
- 자바
- placehoder
- Oracle
- Spring google
- jsp
- java
- 구글 reCaptcha
- gcc
- C언어 구조체
- C언어 메모리
- 포인터
- Spring email
- 역순
- TCP/IP 소켓
- HTML5
- C언어 배열
- C언어 함수
- 날짜
- Vim
- 오라클
- 텍스트 파일 읽기
- C언어
- C언어 매크로
- SQL
- URL 다운로드
- Naver SmartEditor
- C언어 파일입출력
- Today
- Total
목록C언어 (64)
easy software
C언어의 매크로 지시자 중 하나인 #define 을 알아보겠습니다. 매크로란 일종의 치환문입니다. #define PI 3.141597 위의 코드를 해석하면, 'PI가 소스코드상에서 보이면 무조건 3.141597 로 치환해라' 라고 해석합니다. 그리고 PI는 소스코드상에서 무조건 3.141597이 됩니다. 즉, 상수가 된거죠. 그러므로 보통 위와같은 정의를 '매크로상수' 라고 부릅니다. *매크로를 사용할 떄에는 문장 끝에 ;(세미콜론)을 붙이지 않습니다. 컴파일러는 컴파일시에 매크로가 소스코드가 아니라고 판단하기 때문입니다. 그리고 매크로를 두 줄로 나누어서 작성할 때에는 \ 를 사용하여 줄을 바꿔줄 수 있습니다. ex) #define PI \ 3.141597 #define SQUARE(x) x*x 위의 ..
제목에서는 메모리의 동적할당을 이용하여 배열길이를 늘려보자라고 했는데, 배열의 길이를 늘린다기 보다는? 기존의 배열보다 길이가 더 긴 배열을 하나 만들어서 복사하는 형식으로 진행하려 합니다. 사실 이미 할당된 힙 메모리의 바이트를 증가시키는 함수는 정의되어 있습니다. realloc이란 함수인데요, 이 함수를 사용하지 않고 예제를 해보려 합니다. 제 블로그의 메모리 관리와 동적 할당 부분을 보시면 기본 개념을 공부하실 수 있습니다. 이번 글에서는 예제를 진행합니다. 참고해주세요. 프로그램의 조건입니다. 1. 사용자로부터 -1을 입력받기 전까지 계속 정수를 입력받는다. 2. 초기 배열의 크기는 5로 설정하되, 사용자가 계속입력하면 길이를 3씩 증가시킨다. 3. 길이를 증가시킬 때, 새로운 배열을 하나 만들어..
메모리 동적 할당이란? 프로그래머가 힙 영역에 메모리를 할당하는 것을 말합니다. 조금 더 구체적으로 표현하자면, 컴파일 시에 메모리를 할당 받는게 아니라 런타임 시(프로그램 실행 도중)에 메모리를 할당 받는 것을 뜻 합니다. 왜 동적 할당을 사용할까요? 예를 들어, 사용자로부터 정수를 입력받아서 그 정수 값만큼의 배열길이를 정하고 싶습니다. 그런데 배열은 상수로만 선언할 수 있는거 아시죠? 컴파일러가 처음에 배열을 보고 char array[i]; 와 같이 선언되어있으면, 얼마만큼의 메모리공간을 확보해야 할지 모르기 때문에 그렇습니다. 그런데 저 배열의 크기를 정할 때 컴파일 시가 아닌, 런타임 시에 정해주면 되지 않을까요? 이러한 이유 때문에 동적 할당을 사용하는 것입니다. malloc 함수 #inclu..
abcd.exe 와 같은 실행파일을 실행하려면 파일이 메모리에 적재되어야 합니다. 즉, RAM이라 불리우는 메인 메모리에 프로그램이 올라가 있어야 한다는 뜻이죠. 그럼 C언어의 메모리 구조는 어떤식으로 되어있을까요? C언어의 메모리 구조는 아래와 같습니다. 총 네가지의 영역으로 구분할 수 있습니다. - 코드 영역 : 프로그램을 실행하기 위한 코드가 적재됩니다. - 데이터 영역 : 전역변수, static 변수가 적재됩니다. - 힙 영역 : 프로그래머에 의해서 메모리가 관리되는 곳입니다. (차후 기회가 되면 포스팅하겠습니다) - 스택 영역 : 함수 호출 시 생성되는 지역변수와 매개변수가 적재되는 영역입니다. 전역 변수와 static변수는 프로그램의 시작과 동시에 바로 데이터 영역에 적재됩니다. 그리고 프로그..
실행파일의 이름이 test.exe라면 명령어의 형식은 아래와 같게하려고 합니다. c:\> test mystory.txt mystory2.txt mystory.txt의 데이터를 그대로 복사하여 mystory2.txt에 저장하라는 명령입니다. 위의 명령은 cmd에서 실행합니다. c드라이브에 바로 test.exe파일이 있다면 위의 명령어를 입력하시면 됩니다. 만약 다른경로에 있다면, ' cd 폴더명 ' cmd명령어를 이용하여 디렉토리를 이동하세요. 저는 실행파일을 바탕화면에 두어서 cd desktop을 이용하여 바탕화면으로 이동 후 실행했습니다. 위의 프로그램을 구현하기에 앞서, main함수도 인자를 받을 수 있다는 걸 알아야 합니다. 보통은 int main(void)로 메인함수를 구현합니다. 그런데 이번에는..