728x90

이론 80

C언어 연습문제 풀이 CH11 (13~16)

13. 소문자/대문자로 구성된 문자열을 입력받아 모두 대문자로 변환하거나, 모두 소문자로 변환하는 프로그램을 작성하라. //소문자/대문자로 구성된 문자열을 입력받아 모두 대문자로 변환하거나, 모두 소문자로 변환하는 프로그램을 작성하라. #include #include #include int main() { do { char buffer[100]; printf("대소문자가 섞인 영어 문장을 입력하세요. : "); scanf_s("%s", buffer, 100); int input; printf("원하는 동작을 선택하세요. \n"); printf("1. 소문자를 대문자로 변경 \n"); printf("2. 대문자를 소문자로 변경 \n"); scanf_s("%d", &input); do { switch (in..

const int* 와 int* const의 차이점

int i; const int* cip = &i;//포인터 변수를 통해서 값을 변경하는 것을 금지. int* const ipc = &i;//포인터가 가리키는 대상을 변경하는 것을 금지. int main() { int i = 5; int j = 6; const int* cip = &i; cip = &j; // *cip = 8; 안됨 int* const ipc = &i; *ipc = 1; // ipc = &j; 안됨 } const int* const cipc = &i; //포인터가 가리키는 대상을 변경하는 것도 포인터 변수를 통해 값을 변경하는 것도 금지.

C언어 이론 11. 표준 라이브러리(기억장치 관리 함수 ~ 시간 관련 함수)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 기억장치 관리 함수 ① 힙(메모리의 동적 영역)에 공간을 할당하고 해제하는데 사용되는 함수. ② 이에 대한 내용은 동적할당에 대해 적은 부분에서 확인할 것. ③ 아래의 함수들은 stdilb.h나 malloc.c에 선언되어 있다. 함수명 형식 기능 calloc() void* calloc(unsinged n, unsigned size) size 바이트의 공간을 n개 할당하고 시작 지점의 포인터를 반환. 내용은 0으로 초기화 malloc() void* malloc(unsigned size) size 바이트의 공간을 할당하고,시작 지점의 포인터를 반환. free() void* free(void* p..

C언어 이론 11. 표준 라이브러리(정의~문자열 처리 함수)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 표준 라이브러리 함수 ① C언어 표준 규약에 의해서 모든 컴파일러가 기본적으로 제공하도록 약속되어 있는 함수들을 말한다. ② 표준 함수들의 선언은 표준 헤더파일에 있으므로 사용하기 위해서는 함수가 선언된 표준 헤더파일을 #include 해줘야한다. ③ 기본 함수의 정의는 라이브러리 파일에 있으며 링크 과정에서 연결된다. ④ 현재 가장 최신의 표준 규약은 C17이다. ⑤ 이런 표준 함수를 모두 외우는건 비효율적이며, 어떻게 쓰이는지를 알아뒀다가 필요할때마다 레퍼런스를 참조하여 사용하면 된다. ⑥ 아래는 주요한 함수들과 이를 포함하는 헤더파일이다. ⑦ 하나의 함수가 여러개의 헤더파일에 저장되어 ..

C언어 이론 10. 전처리기(연산자 #과 ##, #error, #line)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. #과 ## ① #과 ##은 #define 전처리문에서만 사용되는 특수한 연산자이다. ② C언어 자체의 연산자는 아니기에 우선순위나 결합규칙등은 적용되지 않는다. ③ #(strizing operator)는 #define문의 인수앞에 사용되어, 피연산자를 문자열로 바꿔준다. ④ #과 형식 인수 사이의 공백, 형식 인수 다음의 공백은 무시된다. ex) #define(#exp) == #define(# exp) == #define(#exp ) == #define(# exp ) ⑤ 실인수 내의 연속되는 공백은 하나만 인정된다. 실인수내에 있는 주석은 하나의 공백으로 치환된다. ⑥ 실인수 내에 확장열로 ..

C언어 이론 10. 전처리기(#include~#endif)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 전처리기(preprocessor) ① 원시코드가 컴파일되기 전에 C언어의 문법과는 독립적으로 실행시켜 매크로 문장이 있으면 정의된 문장으로 치환해주는 역할을 담당하는 것 ② 컴파일하기 전에 코드를 변경시켜주는 역할을 수행하기에 기계어로 번역되지는 않는다. ③ 전처리문은 #으로 시작하고, 다른 문장과는 달리 끝에 ;를 붙이지 않는다. ④ 전처리문은 한행에 하나씩 써야하고, 뒤에 주석을 제외한 다른 것이 올 수 없다. ⑤ 전처리기의 종류와 기본적인 역할은 다음과 같다. (일부분이다. 다음 포스트에서 나머지를 다룰예정이다.) 종류 기능 #include 지정파일을 원시 프로그램에 포함시킨다. #de..

C언어 이론 9. 구조체 및 공용체 (공용체, 열거형)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 공용체 (union) ① 여러 자료형의 원소들이 공통으로 사용할 수 있는 기억장소를 정의하고, 한번에 하나의 멤버의 값만 저장하는 자료형. ② 구조체와 유사하여 구조체에서 사용하는 연산자를 그대로 사용한다. ③ 구조체를 선언하는 기본적인 방식은 다음과 같다. 구조체에서의 4가지 바리에이션을 다 적용할 수 있다. union { }; 예시 ) ④ 공용체의 이름 또한 구조체 이름처럼 하나의 타입으로 취급된다. ⑤ 공용체 또한 변수를 선언하면서 초기화 할 수 있지만 첫 요소만 가능하다. ⑥ 공용체는 주로 논리적으로 유사한 값에 대해서 사용한다. Ⅱ. 이름 없는 공용체 ① 공용체에 공용체 이름도 지정..

C언어 이론 9. 구조체 및 공용체 (동적할당)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 정적 할당(Static Allocation)과 동적 할당(Dynamic Allocation) ① 정적 할당은 프로그램을 작성할 때 필요한 메모리양을 미리 알려주어 컴파일러가 그 만큼 메모리를 할당하는 것을 말한다. ② 대부분의 변수들은 선언시 이러한 정적 할당의 방법으로 할당되며 배열도 그러하기에 배열의 크기에는 상수값만 올 수 있다. ③ 하지만 프로그램 작성시에는 메모리가 얼마나 필요한지 전혀 알 방법이 없을 때도 있다. ④ 이럴때 사용하는 방법이 동적할당으로 이는 프로그램 실행중에 필요한 만큼의 메모리를 할당하는 것을 의미한다. Ⅱ. 메모리 관리 원칙 ① 현재의 32비트 이상의 시스템에서..

C언어 이론 8. 포인터 (배열과 포인터)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 배열과 포인터 ① 임의의 자료형 T가 있으면 T형 배열도 T형 포인터도 언제나 선언할 수 있다. ② C언어 내부적으로는 모든 배열은 메모리에 순차적으로 저장된다. ③ 즉, n차원 배열도 내부적으로는 배열의 배열로 메모리에는 순차적으로 저장되어 있다. ④ 배열의 이름은 배열의 시작 위치를 가리키는 포인터 상수이다. ⑤ 정수 포인터에서 1을 더하면 현재 가리키고 있는 주소에서 정수 사이즈만큼 이동한 곳을 가리킨다. ⑥ 포인터들의 배열도, 배열의 포인터도 가능하다. (①에 의해서) ⑦ n차원 배열에서도 포인트의 가감연산만으로 배열의 모든 요소를 참조할 수 있다. (② ~ ⑤에 의해서) Ⅱ. [ ]..

반응형