본문 바로가기
728x90

프로그래밍 언어/C, C++의 기본적인 설명16

[C/C++] 기본적인 입출력함수 C/C++에서의 대표적인 입출력함수 (Input/output functions, I/O functions) printf() 함수 1. Syntax printf(control-string, item1, item2, ...) • control-string: 어떤 포멧으로 출력할 것인지를 지정하는 문자열 (포멧 문자열) • 포멧 문자열은 각 항목마다 하나의 포멧 지정자를 가져야 함 • 포멧 문자열을 서로 구별되는 두 가지 정보를 가지고 있음 - 실제로 출력될 문자들 - 포멧 지정자 • 리턴값 - 자신이 출력한 문자의 수를 리턴함 - 에러가 발생한 경우에는 하나의 음수를 리턴함 - printf()의 리턴값은 주목적인 출력에 비해서 부수적인 것이라 잘 사용되지 않는다. - printf() 리턴값의 한가지 용도는 .. 2022. 2. 27.
[C/C++] 디버그, 신텍스 에러, 세만틱 에러 1. 디버그(Debug) 프로그램 상의 에러를 버그(Bug)라 부르며, 이러한 에러를 찾는 과정을 디버그(Debug)라 부른다. 2. 에러의 종류: 신텍스 에러 vs 세만틱 에러 1) 신텍스 에러 (Syntax error) (a) C/C++언어의 규칙을 따르지 않을 때 발생 (b) 신텍스 에러를 발견/확인하는 방법? - 컴파일을 하기 전 에러가 있는지 눈으로 확인 - 컴파일러*가 찾아낸 신텍스 에러를 조사 * 컴파일러를 통해서 에러의 종류와 위치를 함께 확인이 가능 2) 세만틱 에러 (Semantic Error) (a) C 언어의 규칙은 정확히 따랐지만, 사용자가 원하지 않은 결과를 초래한 경우 (b) 컴파일러는 세만틱 에러는 발견해주지 못하며, 전적으로 세만틱 에러를 찾는 건 프로그래머의 몫이다. - .. 2022. 2. 19.
[C/C++] 문자/문자열 입출력 프로그램을 사용하는 사용자는 입출력 함수를 통해서 프로그램과 정보를 주고 받을 수 있다. C에서 흔히 사용하는 입출력 함수의 예는 아래와 같다; printf(), scanf(), getchar(), putchar(). 1. 단일 문자 입출력 1: getchar()/putchar() 함수 설명 getchar() - 헤더파일: stdio.h - 한 문자를 입력하여 반환 - 파일의 끝에 도달했을 때, EOF값을 반환 putchar() - 헤더파일: stdio.h - 한 문자를 출력 ex) putchar(ch) 변수 ch에 저장된 문자 하나를 출력 Note: getchar()와 putchar()의 경우 진짜 함수가 아니며, 전처리기 매크로에 의해서 정의됨 예시) - 키보드로 입력한 문자를 바로 출력 - EOF .. 2021. 8. 25.
[C/C++] 힙(Heap), 스택(Stack) 메모리 구조 프로그램이 운영체제로부터 할당받는 메모리 공간은 크게 아래와 같이 4가지이다. 영역 설명 코드 (Code) • 실행한 프로그램의 코드가 저장되는 영역 • 텍스트 영역이라고 부르기도 함 • CPU가 코드 영역에 저장된 명령어를 하나씩 처리함 데이터 (Data) • 프로그램의 전역 변수와 정적 변수가 저장되는 영역 • 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸함 힙 (Heap) • 사용자가 직접 관리할 수 있는 메모리 영역 • 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됨 • 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됨 스택 (Stack) • 함수의 호출과 관계있는 지역 변수와 매개변수가 저장되는 영역 • 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸함.. 2021. 8. 17.
[C/C++] C언어 - 구조체 구조체 변수 (Structured Variables) 우리가 다음과 같은 변수들을 다룬다고 가정을 해보자; 도서의 타이틀, 저자명, 출판사, 출판일, 페이지 수, 정가, 권 수. 이 변수들의 타입은 정수, 문자열 등 다양하다. 이러한 다양한 변수들을 하나의 배열만을 이용하여 모든 정보를 넣고자 할 때, 구조체 변수를 사용한다. 구조체는 다양한 종류의 정보들을 저장할 수 있기 때문에, 데이터 베이스를 구축하는데 사용하는데 쓰이는 도구이다. NOTE 1: 하나의 구조체에 저장되는 정보의 총 집합 = 레코드 (record) NOTE 1: 하나의 구조체의 각각의 개별 항목 = 필드 (field) 구조체와 효율적인 데이터형 - 효율적인 데이터 형들은 다음과 같다: a. 큐(queue) b. 바이너리 트리 (bin.. 2021. 6. 28.
[C 언어] 헤더파일 및 분할 컴파일 정리 A. 헤더 파일 1. 헤더 파일(Header file)이란? • 일반적으로 C/C++언어에서는 명령어 및 함수를 정의하고 있는 별도의 파일 (헤더 파일)을 포함한다. • 헤더 파일에서는 다음과 같은 정보를 포함한다. - 사용자가 정의한 구조체 및 공용체의 정의, 데이터형의 정의, 클래스, 함수, 매크로 등의 프로토 타입 - 그러나 실제 함수 코드는 헤더 파일이 아니라 컴파일된 코드로 구성된 라이브러리 파일에 들어있음 • 대표적인 헤더 파일 - stdio.h : (Standard Input/Output) 표준 입출력에 관련된 함수들을 정의 - math.h : sqrt(), pow(), abs() 등의 수학 관련 함수 정의 - stdlib.h : 표준 라이브러리 함수 정의 2. 왜 헤더 파일을 사용해야 하는.. 2021. 2. 5.
[C 언어] fopenmp - 스레드 하나만 사용하는 경우 c로 작성한 소스코드를 컴파일을 하고 링크를 하여 실행 프로그램을 만든 후, 해당 프로그램을 실행시키니 코어 하나만 사용을 하는 문제가 발생하였다. 확인을 해보니 컴파일시 -fopenmp를 링크를 걸어주지 않음으로 발생한 문제였다. 다행히 나와같은 문제점을 올린 사람이 있어서 해결방법을 쉽게 찾을 수 있었다 [1]. 아래는 위 링크의 코드 및 컴파일, 링크의 예시이다. 파일명: main.c #include #include int main() { #pragma omp parallel { fprintf(stderr, "thread %d\n", omp_get_thread_num()); } return 0; } (1) 컴파일: $gcc main.c -c -fopenmp (2) 링크: $gcc main.o -o .. 2021. 1. 30.
728x90