본문 바로가기

Programming/C,C++8

[C/C++] C언어 공백 문자 포함한 문자열 입력받는 방법 (scanf / fgets) 안녕하세요 omyo 입니다. 이번 포스팅에서는, 공백 문자를 포함한 문자열을 입력받는 2가지 방법에 대해서 소개해 드리려고 합니다. scanf("%s",문자열) 을 이용해서 문자열을 받으면, scanf는 공백을 문자열의 끝으로 인식하기 때문에 공백 문자 뒤의 내용이 모두 잘리게 됩니다. 예를들어 다음 코드에 "Hello C World" 문자열을 입력하면 Hello 공백 뒤의 C World 문자열이 모두 잘립니다. #include #define LEN 1000000 int main(void){ char str[LEN]; scanf("%s",str); printf("%s",str); } 1> scanf[] scanset character scanf("%[^\n]s", str) scanset character.. 2021. 2. 24.
[C언어] C언어의 메모리 구조 ; 데이터(Data)/스택(Stack)/힙(Heap) 영역 #C언어의 메모리 구조 프로그램을 실행하면 운영체제는 프로그램이 사용하고자 하는 메모리 영역을 할당해 준다. 이 때 할당되는 메모리 영역은 크게 데이터(Data), 스택(Stack), 힙(Heap) 영역으로 3가지로 나뉜다. 할당 시기는 프로그램이 실행될 때마다 할당하며, 할당 장소는 메인 메모리(RAM)이고, 할당 용도는 프로그램에 실행에 필요한 메모리 영역(지역 변수, 전역 변수 선언)할당을 위함이다. #1 데이터(Data) 영역 전역 변수와 정적(Static) 변수가 할당되는 영역이다. 프로그램을 시작하면 할당하고, 종료하면 메모리를 해제한다. #2 힙(Heap) 영역 필요에 따라 프로그래머가 동적으로 메모리를 할당하는 영역으로, 프로그램이 실행되는 동안(Run Time) 결정해야 하는 경우 사용한.. 2021. 2. 7.
[C++] #5 참조자(Reference)와 함수 #5 참조자와 함수 omyodevelop.tistory.com/64 참조자의 기본 개념에 대해 알고있다면, 보지 않아도 됩니다. ■ 목차 #1 참조자와 함수 #2 참조자를 이용한 함수와, const 키워드 #3 반환형이 참조형인 함수 #1 참조자와 함수 C언어에서, 함수의 호출방식은 Call-by-value , Call-by-reference 2가지로 나뉜다는 것을 공부했을 것이다. Call-by-value 로 선언된 함수의 내부에서, 함수외부에 선언된 변수의 접근이 불가능하기에, 선언한 함수 블럭 안에서, 외부의 변수에 접근하고자 한다면, Call-by-reference 형태로 함수를 선언 해야만 한다. 그런데, C++에서는 Call-by-reference 함수 선언 방식이 2가지가 존재한다. 1. 주.. 2021. 1. 2.
[C++] #4 참조자(Reference) #4 참조자(Reference) ■ 목차 #1 참조자(Reference)의 이해 #2 참조자 선언 규칙 #1 참조자(Reference)의 이해 참조자란 자신이 참조하는 변수를 대신하는 또 하나의 이름, 즉 별칭과도 같다. int val1 = 2021; int &val2 = val1; 다음과 같이 선언하면, val1 메모리 공간에, val2 라는 이름(별칭)이 하나 더 붙게 된다. val2는 val1의 참조자가 되며, 기능과 연산의 결과가 변수와 동일하다. 하지만, C++에서는 참조자와 변수를 구분한다. val2 = 1000 다음 문장을 실행하면, val1의 값도 1000으로 초기화된다. 그리고, 참조자는 참조하는 변수와 동일한 메모리 공간을 가리키기에, cout 2021. 1. 2.
[C++] #3 이름공간(Name Space)의 사용방법 Goal 1. 이름공간이 필요한 이유와, 사용방법에 대한 이해 2. using 키워드의 사용방법 3. 이름공간에 별칭을 지정하는 방법 4. 범위지정 연산자로 전역변수에 접근 ● 이름공간(Name Space) 이름공간이 필요한 이유와, 사용방법에 대해 알아보자. 이름공간이란, "이름을 붙여놓은 공간" 이라는 뜻이다. 말 그대로 특정한 영역에 이름을 붙여주기 위한 문법이다. 그렇다면 이름공간이 왜 필요한 것일까? A회사와 B회사가 같이 프로젝트를 진행하고 있다고 생각해 보자. A회사에서 MySum 이라는 함수를 사용하고 있다. 그런데 B회사와의 사전협의가 진행되지 않아 B회사도 MySum이라는 동일한 함수를 정의하고 말았다. 중복되는 함수나 변수의 이름을 모두 변경하는 해결책도 있겠지만, 이것은 비효율적이며.. 2020. 12. 23.
[C++] #2 함수 오버로딩(Function Overloading)과 디폴트 값(Default Value) Goal 1. 함수 오버로딩의 개념에 대한 이해 2. 함수 매개변수 디폴트 값의 개념과, 사용방법 ● 함수 오버로딩 (Function Overloading) 함수 오버로딩이란, 동일한 이름의 함수를 정의하여, 생산성을 높이는 방식이다. 그러나, C에서는 이를 허용하지 않았다. 왜냐하면, C와 C++은 호출할 함수를 찾는 방식이 다르기 떄문이다. '함수의 이름' 으로 함수를 구분하는 C와 달리 C++은 '함수의 이름'과, '매개변수'로 함수를 구별한다. 따라서, 이름은 동일하고, 매개변수가 다른 여러개의 함수를 만들 수 있는것이다. 다음 예시를 보자. #include void sum(int a, int b) { std::cout 2020. 12. 22.